Hibernate 实体位于多个JAR中时出现未知实体异常
我在运行maven测试时遇到此异常 错误-无法启动应用程序 已部署:classpath.ear org.apache.openejb.OpenEJBException: 创建应用程序失败: classpath.ear: org.hibernate.AnnotationException: @OneToOne或@MANYTONE on net.atos.wlp.cns.core.record.ClearingRecord.clearingBatch 引用未知实体: net.atos.wlp.cns.core.batch.ClearingBatch: @OneToOne或@MANYTONE on net.atos.wlp.cns.core.record.ClearingRecord.clearingBatch 引用未知实体: net.atos.wlp.cns.core.batch.ClearingBatch 位于org.apache.openejb.assembler.classic.assembler.createApplication(assembler.java:658) 我尝试了persistence.xml文件中的&option,但仍然存在错误Hibernate 实体位于多个JAR中时出现未知实体异常,hibernate,jpa-2.0,Hibernate,Jpa 2.0,我在运行maven测试时遇到此异常 错误-无法启动应用程序 已部署:classpath.ear org.apache.openejb.OpenEJBException: 创建应用程序失败: classpath.ear: org.hibernate.AnnotationException: @OneToOne或@MANYTONE on net.atos.wlp.cns.core.record.ClearingRecord.clearingBatch 引用未知实体: net.atos.wlp.cns
如果有人面临类似的问题,请帮助我。如果您有两个类,在同一个类加载器中具有相同的名称和相同的包,则结果是不一致的行为(在某种意义上,它可能会根据您选择的JVM/应用程序服务器的组合而表现不同)。您可能希望对JVM/应用程序服务器的预期行为进行一些研究,但理想的解决方案是不要在两个JAR中具有相同的类(在同一个包中)。如果您必须这样做,我会说您有一个必须解决的架构问题;-) 我也遇到了类似的问题——我的实体分布在多个jar文件中。我也用了maven 起初,我能够通过将jar文件解压到类中来运行它。最后,解决方案是在persistence.xml中指定依赖项的jar文件:
...
<persistence-unit ...
<provider>...</provider>
<jar-file>WEB-INF/lib/my-jar-file-0.0.1-SNAPSHOT.jar</jar-file>
<properties>
...
。。。
我的想法是,每个包含实体的jar都需要一个持久单元,因为PU是在jar的META-INF文件夹中配置的。+1000。有效,但这是一个多么可怕的解决方案!很难相信Hibernate不能处理这个问题。