2017-10-26 6 views
0

내가이 persistence.xml에 실체 두 개의 항아리 - 파일을 가지고 :여러 최대 절전 모드 Envers 개정 법인

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

중앙 model.jar이 model.jar에 subclasssed 일부 개체가 포함되어 있습니다.

central-model.jar는 CRUD-Application의 일부이며 개정 본이 필요합니다.

model.jar도 CRUD-Application의 일부이며 개정 본이 필요합니다.

테이블은 Databaselink로 연결된 다른 스키마에 있습니다. 그래서 하나의 지속성 단위 만 있습니다.

다음과 같은 오류로 리드를 배포 :

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

는 사람이 같은 문제로 실행 했습니까? 어떻게 해결 했습니까?

당신은 Hibernate가 그들 사이의 차이 만들 수 있도록 모두 항아리에 엔티티 이름을 재정의해야
+1

그래서 model.jar과 central-model.jar에는 개정 엔터티가 포함되어 있습니까? – Wabi

+0

예, 가능합니다. 수정본 - model.jar의 엔터티가 한 데이터베이스 스키마의 ab 테이블을 가리키고, central-model.jar의 수정본 엔터티가 다른 데이터베이스 스키마를 가리 킵니다. – sws

+0

답장을 보내 주셔서 감사합니다. @Naros가 가정 할 때, 나는 '@RevisionEntity'를 다루고있다. 불행하게도, 두 개의 PersistencContext는 중앙 모델에서 모델로 서브 클래스화할 때 불가능합니다. 내가 다른 해결책을 찾아야 만하는 것처럼 보입니다. – sws

답변

0

: model.jar에서

: 중앙 model.jar에서

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

:

@Entity(name="prefixB.Revision") 
public class Revision {} 
을 쿼리에서

는 사용

createQuery("from prefixA.Revision") 
1

개정 번호이라는 용어를 사용할 때 암시하는 내용에 따라 다릅니다.

귀하의 질문에 hibernate-envers이라는 태그가 지정되어 있으므로 @RevisionEntity이라는 주석이 달린 항목을 언급했다고 가정합니다. 그것이 정확하다면, 당신이 묘사하고있는 것은 적어도 하나의 영속성 단위 내에서 가능하지 않습니다.

여러 개의 @RevisionEntity 주석이있는 클래스를 지원하는 유일한 방법은 고유 한 지속성 단위로 구분하는 것입니다.

위의 내용을 언급하지 않고 동일한 이름이지만 클래스가 다른 두 엔티티가있는 시나리오를 설명하는 경우 @Wabi 님의 조언을 따라 각각의 고유 한 이름을 제공해야합니다. Hibernate가 그것들을 차별화하도록 허용한다.