2016-09-20 4 views
0

나는이 3 개의 엔티티 E1, E2, E3을 가지고있다. E3 클래스에 추가 필드가있는 다른 테이블을 가리키는 2 개의 기본 키가 있음을 알아야합니다.두 개의 다른 테이블을 가리키는 2 개의 ID를 가진 클래스에 대한 jpa 2.0 주석

@Entity 
public class E1 extends RAP{ 
    /** 
    * 
    */ 
} 

@Entity 
public abstract class E2{ 
    /** 
    * 
    */ 
} 

E3 클래스에는 e1과 e2를 가리키는 2 개의 기본 키가 있습니다.

@Entity 
public class E3 extends RAP{ 
    @Id 
    @ManyToOne 
    @JoinColumn(name = "e1_id") 
    private E1 e1; 

    @Id 
    @ManyToOne 
    @JoinColumn(name = "e2_id") 
    private E2 e2; 

    private Double myfield1; 
    private Double myfield2; 
} 

그러나 문제가 있습니다. 이 같은 ...

This class has a composite primary key. It must use an ID class. 

그래서 나는 또한, 여러 컬럼을 통해 제약 조건을 지정하는 방법의 예를 가지고, 어떻게 테이블 간의 관계를 선언 엔티티

+0

기본 액세스 키가 2 개가 아니고, 포함 액세스를 사용하십시오. 빠른 액세스를 위해 필드를 인덱싱하거나 제한 조건에 값을 포함하거나 반복하지 않으려면 다른 방법으로 구현할 수 있지만 각 JPA에는 하나만 있어야합니다 ID 필드 – karelss

+0

이 다른 방법을 보여 주시겠습니까 – isom

+0

메시지가 말하는대로'@ IdClass'를 정의하십시오 ... –

답변

1

Here을 @Embedded 사용하지 않고 몇 가지 주석을 사용하려면 this에 jpa 2.0의 색인 생성에 대한 참조와 2.1의 주요 차이점이 있는지 확인하십시오.

문제는 계층 적 모델에 가장 적합한 후보로 보입니다.이 link은 이러한 종류의 모델을 정의하고 사용하는 방법의 예를 보여줍니다.

좀 더 보관하고 싶은 것을 설명 할 수 있다면 더 구체적인 해결책을 찾을 수있을 것입니다.

관련 문제