2013-03-28 2 views
1

기본적으로 두 개의 엔티티 Entity1Entity2이 있습니다.JPA/EclipseLink에서 순서 및 중복 목록으로 유지하십시오.

@OneToMany(cascade=CascadeType.PERSIST) 
@OrderColumn 
List<Entity2> e = new LinkedList<Entity2>(); 

Entity2 몇 가지 물건을 포함하지만 관련 아무것도 : Entity1이 코드의 비트가 포함되어 있습니다. 일부 인스턴스를 목록에 추가하려면 e 그리고 가장 중요한 것은 몇 가지 중복 (동일한 참조)을 두 번 이상 목록에 추가하려고합니다. 여전히 JPA가 둘 다 유지되기를 원합니다. JPA가 목록의 순서를 유지하기를 원합니다.

지금까지는 고유 항목 만 추가하면 작동합니다. 중복을 추가하면 JPA는 실제로 올바른 데이터 (Entity1, Entity2 및 Order의 ID)를 유지하려고하지만 관계 테이블의 기본 키가 두 ID 일 뿐이므로 JPA는 중복 된 기본 키 오류를 발생시킵니다.

어떻게 해결할 수 있습니까?

+0

누가 DDL을 생성합니까? e1 id 및 e2 id가 아닌 order 열 및 entity2 id 열이있는 기본 키 정의가 있어야합니다. Hibernate의 자동 DDL은 작동하는 정의를 만든다. –

+0

eclipselink 않습니다 – Simiil

답변

2

현재 EclipseLink는 OneToMany 관계에 대해 중복을 지원하지 않습니다. Duplicate는 (기본) ElementCollection 매핑을 지원합니다.

버그에게 투표 해주십시오

, https://bugs.eclipse.org/bugs/show_bug.cgi?id=256978

가장 좋은 방법은 다른 기업에 조인 테이블을지도 대상에 1-1으로에 1 m를 정의하는 것입니다.

관련 문제