Tutorials  /  Databases

Häufiges Hibernate-Problem: Kein Identifikator für Entity angegeben

Ccentron Redaktion · Mai 2024 ·2 Min. Lesezeit ·Databases, Tutorial

Bei der Verwendung von Hibernate kann es vorkommen, dass die Fehlermeldung "AnnotationException: No identifier specified for entity" auftritt. In unserem aktuellen Blogbeitrag präsentieren wir eine einfache Lösung für dieses häufige Problem.

Beim Ausführen mancher Projekte sto, das einige Entity-Beans enthielt, erhielt ich folgende Fehlermeldung:

Code
Initial SessionFactory creation failed.org.hibernate.AnnotationException: No identifier specified for entity: com.journaldev.hibernate.model.Address
...
Exception in thread "main" java.lang.ExceptionInInitializerError

Ursache des Problems

Dieser Fehler tritt auf, wenn ein Primärschlüssel im Entity-Bean nicht spezifiziert wurde. Ein Beispiel hierfür ist das Bean Address.java, das folgendermaßen definiert war, jedoch ohne die notwendige @Id-Annotation für das Primärschlüsselfeld:

Code
@Entity
@Table(name = "ADDRESS")
@Access(value=AccessType.FIELD)
public class Address {
    // ... Felder ohne @Id Annotation ...
}

Lösung für dieses Hibernate-Problem

Die Lösung besteht darin, die @Id-Annotation zum Primärschlüsselfeld hinzuzufügen:

Code
@Id
@Column(name = "emp_id", unique = true, nullable = false)
@GeneratedValue(generator = "gen")
@GenericGenerator(name = "gen", strategy = "foreign", parameters = {@Parameter(name = "property", value = "employee")})
private long id;

Ein häufiges Missverständnis: Zugriffstypen in Hibernate

Ein weiteres, verwirrendes Szenario entsteht, wenn es um den Zugriffstyp in Hibernate geht. Hibernate kann auf zwei Arten auf Bean-Eigenschaften zugreifen:

  1. Feldzugriff (AccessType.FIELD): Hibernate sucht nach Annotationen auf Variablen.
  2. Eigenschaftszugriff (AccessType.PROPERTY): Hibernate sucht nach Annotationen auf Getter- und Setter-Methoden.

Falls die Annotationen nicht entsprechend dem definierten Zugriffstyp gesetzt sind, führt dies ebenfalls zu einer AnnotationException. Im Employee.java-Bean trat dieser Fehler auf, weil alle JPA-Annotationen auf Getter-Methoden angewendet wurden, obwohl der Zugriffstyp als Feld definiert war. Die Korrektur bestand darin, den Zugriffstyp auf AccessType.PROPERTY zu ändern.

DB

Passende Infrastruktur bei centron

Datenbanken im Betrieb wollen gepflegt werden: centron übernimmt auf Wunsch Updates, Backups und Monitoring – von der einzelnen Instanz bis zum Cluster. Managed Cluster ansehen →

Fazit

Diese Erfahrung verdeutlicht die Bedeutung, die Details und Spezifikationen von Hibernate genau zu kennen und zu beachten. Ein kleines Übersehen oder Missverständnis kann zu stundenlangem Debugging führen. Hoffentlich hilft dieser Beitrag anderen Entwicklern, ähnliche Probleme schnell zu lösen.

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie Databases
Teilen
Noch offene Fragen?

Our team will help you with your specific setup - in German or English, by people who run the platform themselves.

War dieses Tutorial hilfreich?

Your answer is stored anonymously and helps us improve our tutorials.

Kommentare

No comments yet - be the first to ask a question about this tutorial.

Sign in to comment

Comments are open to centron customers. Sign in to your account to ask a question about this tutorial.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren