Несколько Hibernate Envers Revision Entity

У меня есть два файла jar с объектами в файле persistence.xml:

    <jar-file>/lib/model.jar</jar-file>
    <jar-file>/lib/central-model.jar</jar-file>

Central-model.jar содержит некоторые объекты, которые являются подклассами в model.jar.

Central-model.jar является частью CRUD-приложения и нуждается в Revision Entity.

model.jar также является частью CRUD-приложения и также нуждается в Revision Entity.

Таблицы расположены в разных схемах, связанных ссылкой на базу данных. Таким образом, существует только одна единица постоянства.

Развертывание приводит к следующей ошибке:

Caused by: org.hibernate.AnnotationException: Use of the same entity name twice: REVISIONEN

Кто-нибудь сталкивался с такой проблемой? Как вы это решили?


person sws    schedule 26.10.2017    source источник
comment
Итак, и model.jar, и central-model.jar содержат сущность Revision?   -  person Wabi    schedule 27.10.2017
comment
Да, это так. Revision-Entity из model.jar указывает на таблицу ab в одной схеме базы данных, Revision-Entity из central-model.jar указывает на другую схему базы данных.   -  person sws    schedule 27.10.2017
comment
Спасибо всем за ваши ответы. Как и предполагал @Naros, я имею дело с @RevisionEntity. К сожалению, два PersistencContexts невозможны, поскольку я создаю подклассы от центральной модели к модели. Похоже, мне нужно искать другое решение для этого.   -  person sws    schedule 28.10.2017


Ответы (2)


Это зависит от того, что вы подразумеваете под термином Revision Entity.

Учитывая, что ваш вопрос помечен hibernate-envers, я предполагаю, что вы имеете в виду объект с аннотацией @RevisionEntity. Если это так, то то, что вы описываете, невозможно, по крайней мере, в пределах одной единицы персистентности.

Единственный способ поддерживать наличие нескольких классов с аннотациями @RevisionEntity — это разделить их на свои собственные единицы персистентности.

Если вы не имеете в виду вышеизложенное и описываете сценарий, в котором у вас есть два объекта с одинаковым именем, но разными классами, вам необходимо следовать @Wabi и дайте каждому из них уникальное имя, чтобы Hibernate мог различать их.

person Naros    schedule 27.10.2017

Вам нужно переопределить имена сущностей в обоих JAR-файлах, чтобы Hibernate мог различать их:

в модели.jar:

@Entity(name="prefixA.Revision")
public class Revision {}

в центральной модели.jar:

@Entity(name="prefixB.Revision")
public class Revision {}

Затем в запросах используйте:

createQuery("from prefixA.Revision")
person Wabi    schedule 27.10.2017