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 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!