2016-04-15 18 views
3

Ich versuche Java mit dem Maven exec-Plugin auszuführen, und erhalte einen Fehler Caused by: org.hibernate.UnknownEntityTypeException: Unable to locate persister: my.biz.CoolEntity. Ich habe eine Reihe fehlgeschlagener Lösungen ausprobiert, bevor ich schließlich einen Hacky-Fix ​​gefunden habe. Basierend auf dem Hacky-Fix ​​glaube ich, dass das Problem ein Laufzeitklassenpfadfehler sein könnte.Hibernate-Fehler "Persistenz kann nicht gefunden werden"

Ich bin auf der Suche nach einer Antwort, die mir sagen wird, wie man das Problem angehen, ohne auf die erforderlichen Dateien kopieren zu müssen, wie ich es in der Hacky-Fix.

Hintergrund

ich ein Maven-Projekt "Projekt A" habe, die Abhängigkeiten von Hibernate 5.0.1.Final sowie ein weiteres Projekt "Projekt B" hat. Projekt B enthält meine JPA-Entitätsklassen, einschließlich my.biz.CoolEntity.

Normalerweise baue ich alles in ein schattiertes JAR und führe es ohne Probleme aus.

Hibernate Ausgabe

Vor kurzem begann ich exec:java Ziel Maven verwenden, sondern leite in dem, was auf der Oberfläche ist ein Hibernate Problem. wenn ich mvn exec:java -DmainClass=my.biz.CoolEntity laufen, ich diesen Fehler:

Caused by: org.hibernate.UnknownEntityTypeException: Unable to locate persister: my.biz.CoolEntity 
     at org.hibernate.internal.SessionFactoryImpl.locateEntityPersister(SessionFactoryImpl.java:792) ~[hibernate-core-5.0.1.Fi 
nal.jar:5.0.1.Final] 
     at org.hibernate.internal.SessionImpl.locateEntityPersister(SessionImpl.java:2641) ~[hibernate-core-5.0.1.Final.jar:5.0.1 
.Final] 
     at org.hibernate.internal.SessionImpl.access$2500(SessionImpl.java:164) ~[hibernate-core-5.0.1.Final.jar:5.0.1.Final] 
     at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.<init>(SessionImpl.java:2579) ~[hibernate-core-5.0.1.Final 
.jar:5.0.1.Final] 
     at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.<init>(SessionImpl.java:2566) ~[hibernate-core-5.0.1.Final 
.jar:5.0.1.Final] 
     at org.hibernate.internal.SessionImpl.byId(SessionImpl.java:1044) ~[hibernate-core-5.0.1.Final.jar:5.0.1.Final] 
     at org.hibernate.internal.SessionImpl.get(SessionImpl.java:955) ~[hibernate-core-5.0.1.Final.jar:5.0.1.Final] 
     at org.hibernate.jpa.spi.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:1075) ~[hibernate-entitymanager-5. 
0.1.Final.jar:5.0.1.Final] 

Fehlgeschlagene Versuche

Ich versuchte Verwendung der exec Plugins <additionalClasspathElements> und <includePluginDependencies> machen. Die erste Lösung führte zu keiner anderen und die zweite zu einem Kompilierungsfehler.

Hacky fix

Was für mich arbeiten schließlich wurde das Kopieren der kompilierten Klassen von Projekt B in Projekt A

Antwort

0

Wenn die Einheiten in einem anderen Gefäß mit Wohnsitz, müssen Sie es sind in persistence.xml. <jar-file>entities-packaged.jar</jar-file>. Verschiedene Optionen sind here erklärt

0

Wenn wir Hibernate 5 Gläser verwenden, dann erhalten wir

org.hibernate.UnknownEntityTypeException: Unable to locate persister".

Ich habe gerade die Hibernate jar Versionen 5-4 und dann war alles in Ordnung. Hibernate 5 findet die Entitätsklassen auch nach dem Mapping nicht.

Verwandte Themen