Hibernate 实体位于多个JAR中时出现未知实体异常

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

我在运行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,但仍然存在错误


如果有人面临类似的问题,请帮助我。

如果您有两个类,在同一个类加载器中具有相同的名称和相同的包,则结果是不一致的行为(在某种意义上,它可能会根据您选择的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不能处理这个问题。