Heim >Datenbank >MySQL-Tutorial >Hibernate 5-Fehler „Unbekannte Entität': Wie konfiguriere ich SessionFactory ordnungsgemäß für die Entitätszuordnung?

Hibernate 5-Fehler „Unbekannte Entität': Wie konfiguriere ich SessionFactory ordnungsgemäß für die Entitätszuordnung?

Linda Hamilton
Linda HamiltonOriginal
2024-12-15 03:45:23445Durchsuche

Hibernate 5

Hibernate 5: Behebung des Fehlers „Unbekannte Entität“ während der Integration

Beim Versuch, Hibernate 5.0 mit MySQL zu integrieren, stoßen viele Entwickler auf die Fehlermeldung „org.hibernate.MappingException: Unbekannte Entität.“ Dieses Problem tritt insbesondere bei den Hibernate-Versionen 5.0.0 und 5.0.1 auf, während frühere Versionen wie 4.3.9 ordnungsgemäß funktionieren.

Problemdefinition

Die „Unbekannte Entität „Fehler tritt auf, wenn Hibernate die als Entität annotierte Klasse nicht erkennen kann. Dies kann passieren, wenn die Zuordnungsmetadaten für die Klasse nicht ordnungsgemäß konfiguriert oder zur Hibernate-Konfiguration hinzugefügt wurden.

Konfigurationsdetails

Die bereitgestellten Maven-Abhängigkeiten und hibernate.cfg. Die XML-Konfiguration scheint korrekt zu sein. Die Benutzerklasse ist auch als Entität annotiert und wurde der Datenbanktabelle „User_table“ zugeordnet.

Ursache und Lösung

Die Hauptursache dieses Problems liegt in der Prozess der Erstellung der SessionFactory in der HibernateMain-Klasse. In Hibernate 5 wird der folgende Code zum Konfigurieren und Erstellen der SessionFactory verwendet:

Configuration configuration = new Configuration();
configuration.configure();

ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(
    configuration.getProperties()).build();

SessionFactory sf = configuration.buildSessionFactory(sr);

Das Problem entsteht, weil die Verwendung von „configuration.buildSessionFactory(sr)“ in Hibernate 5 dazu führt, dass die Konfiguration die durch den Aufruf erhaltenen Zuordnungsinformationen verliert Konfiguration.configure(). Daher ist Hibernate nicht in der Lage, die User-Klasse als annotierte Entität zu erkennen.

Lösung

Um dieses Problem zu lösen, gibt es zwei Ansätze:

Verwendung von Standardkonfigurationsdateien (hibernate.cfg.xml und hibernate.properties)

Wenn Sie Standardkonfigurationsdateien verwenden, können Sie die SessionFactory ohne Verwendung von ServiceRegistry erstellen.

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

Eigenschaften werden geladen

Wenn Sie Eigenschaften in einer separaten Datei haben, können Sie diese laden und die SessionFactory damit erstellen StandardServiceRegistryBuilder.

Eigenschaften als Ressource laden

ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties("hibernate-h2.properties").build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);

Eigenschaften aus einem Pfad laden

File propertiesPath = new File("some_path");
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties(propertiesPath).build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);

Zusätzliche Hinweise

  • Das Beispiel-Tutorial In der Hibernate 5-Dokumentation (1.1.6 Startup und Hilfsprogramme) finden Sie ein falsches Beispiel, das keine ordnungsgemäße Konfiguration durchführt.
  • Die Verwendung des falschen Codes kann zum Fehler „Unbekannte Entität“ führen.

Das obige ist der detaillierte Inhalt vonHibernate 5-Fehler „Unbekannte Entität': Wie konfiguriere ich SessionFactory ordnungsgemäß für die Entitätszuordnung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn