多个Hibernate Envers修订实体

时间:2017-10-26 20:52:08

标签: hibernate jpa hibernate-envers

我在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

有人遇到过这样的问题吗? 你是怎么解决的?

2 个答案:

答案 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")
相关问题