2012-03-25 4 views
2

대화 엔터티와 SMS 엔터티간에 OneToMany 연결을 만들려고합니다.OWNED 엔터티에서 외래 키를 사용하는 OneToMany 연결

외래 키가 대화 테이블에 있어야합니다. 여기

 
Table_Conversation 

- id BIGINT 
- sms_id BIGINT FK REFERENCES SmsBean.id 

는 회화 클래스에게 내가 필요하지 않는 한, 나는 SMS를 클래스에 대화 필드를 원하지 않는

 
public class Conversation{ 
    //... 
    @OneToMany(targetEntity=SmsBean.class, table="conversation") 
    public List getSmsList() { 
    return smsList; 
    } 
} 

주입니다.

Hibernate는 내 테이블을 생성 할 수없는 다음과 같은 예외가 발생합니다 :

 
org.hibernate.cfg.NotYetImplementedException: Collections having FK in secondary table 

당신이이 작업을 수행하는 방법을 알아내는 데 도움이 할 수

/JPA2.0 최대 절전 모드 3.5을 사용하고 있습니다.

답변

2

이 질문은 나의 것입니다. , 부정확하다.

외래 키가 대화 테이블에 있어야합니다.

 
Table_Conversation 

- id BIGINT 
- sms_id BIGINT FK REFERENCES SmsBean.id 

하지만 같은 대화 (id = 123)에 두 개의 문자가있는 경우 어떻게됩니까? 그러면 동일한 ID를 가진 두 행이 생깁니다.

 
Table_Conversation 

|--------------| 
| id | sms_id | 
|--------------| 
| 123 | 1001 | 
| 123 | 1002 | 
|--------------| 

그래서이 생각을 포기하고 지금은 최대 절전 모드 권장 방법으로 조인 테이블을 사용하고 있습니다.

0

이 시도

감사 :

public class Conversation{ 
    //... 
    @OneToMany 
    public List<Sms> getSmsList() { 
    return smsList; 
    } 
} 

이 관계를 보유 할 테이블 Conversation_Sms을 생성합니다. Sms 엔티티에 대화 필드를 추가하고 mappedTo 속성을 OneToMany 주석에 추가 한 경우이 테이블은 생성되지 않습니다. 그러나 말했던 것처럼 이것은 사용자가 원하는 것이 아닙니다 ..

관련 문제