2011-03-30 6 views
0

Acount와 Record 사이에 @ManyToOne 매핑을 만들고 싶습니다. 하나의 계정에 많은 레코드가있을 수 있습니다. 하지만 레코드 클래스에 Account 필드를 추가하거나 그 반대로하고 싶지 않습니다. 특수 효과에 설명해 주시겠습니까? 당신은 당신이 단순히 (확인 중, 또는 INT)와 같은 긴 기록의 계정 클래스를 계정 아이디를 정의 할 수 없습니다 당신이하지 않는 한 주석을 원하지 않는 경우 테이블최대 절전 모드. id에 의한 외래 키 매핑

@Entity 
public class Account { 

    @Id 
    ... getId(); 
} 

@Entity 
public class Record { 

    @Id 
    ... getId(); 

    @????? 
    ... getAccountId(); 

} 
+0

입니까? 돌아 오기를 원하는 것이 하나의 ID라면, 어떤 종류의 매핑도 필요하지 않습니다. 'accountId' 또는'recordId'를 일반 열로 넣으십시오. –

+0

외래 키는 어떻게됩니까? –

+0

그 점을 명확히 할 수 있습니까? 'accountId' 또는'recordId'는 외래 키입니다. –

답변

2

매핑 엔티티, 최대 절전 모드는 일반적으로 작동하는 방식입니다 다른 열 이름이 필요합니다. 그러나 나는 그것을하지 않을 것을 제안합니다.

+0

이 경우에 최대 절전 모드에서는 외래 키가 자동으로 생성되지 않습니다. 이것은 문제입니다. –

+3

당신이 원하는대로 할 수있는 방법이 없다고 생각합니다. Hibernate에서 외래 키를 정의하려면 대상 엔터티가 필요합니다. –

0

외래 키 제약 조건을 두 테이블 중 하나에 추가하지 않으려는 경우 관계를 만들 수있는 제약 조건을 사용하여 별도의 테이블을 만들 수 있습니다. 당신이 실제 계정 또는 기록 필드를 추가하지 않을 경우, 매핑의 포인트는 무엇 JPA와

accountId | recordId 
-------------------- 
1  | 2 
1  | 3 
2  | 4 

...

@ManyToOne 
@JoinColumn(table=TABLE_NAME_ABOVE,name="accountId") 
public Account getAccount(){ ... } 
+0

이 외래 키가 필요합니다. 별도 테이블을 통한 관계 ... 가난한 디자인처럼 보입니다. –