我在persistence.xml中有两个带有实体的jar文件:
<jar-file>/lib/model.jar</jar-file>
<jar-file>/lib/central-model.jar</jar-file>
central-model.jar包含一些在model.jar中被子类化的实体。
central-model.jar是CRUD-Application的一部分,需要一个修订实体。
model.jar也是CRUD-Application的一部分,还需要一个修订实体。
这些表位于不同的Schema中,由Databaselink链接。 所以只有一个持久单元。
部署导致以下错误:
Caused by: org.hibernate.AnnotationException: Use of the same entity name twice: REVISIONEN
有人遇到过这样的问题吗? 你是怎么解决的?
答案 0 :(得分:1)
这取决于您使用术语修订实体时所暗示的含义。
鉴于您的问题已标记为hibernate-envers
,我将假设您指的是使用@RevisionEntity
注释的实体。如果这是准确的,那么你所描述的是不可能的,至少不是在一个持久性单元内。
支持多个@RevisionEntity
注释类的唯一方法是将它们分成各自的持久性单元。
如果你没有提到上述内容,并且描述的情况是你有两个名称相同但类别不同的实体,你需要按照@Wabi的建议给他们每个人一个唯一名称,允许Hibernate区分它们。
答案 1 :(得分:0)
您需要覆盖两个JAR中的实体名称,以允许Hibernate在它们之间产生差异:
在model.jar中:
@Entity(name="prefixA.Revision")
public class Revision {}
在central-model.jar中:
@Entity(name="prefixB.Revision")
public class Revision {}
在查询中,然后使用:
createQuery("from prefixA.Revision")