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