2012-03-31 12 views
2

ここでは、双方向のOneToMany関係を表すために使用する2つのクラスを示します。なぜ、Hibernateはジョイン・テーブルとジョイン・カラムを作成していますか?

 
Class Contact { 
    @OneToMany 
    public Set getPhoneNumbers() { 
     return phoneNumbers; 
    } 
} 
 
Class PhoneNumber{ 
    @ManyToOne 
    public Contact getContact() { 
     return contact; 
    } 
} 

Hibernateは(私は私の必要性のために良いと思います)テーブル

 
contact_phonenumber 
    -Contact_id 
    -phoneNumbers_id 

に参加作成されているが、なぜそれがのPhoneNumberテーブル

上のこの余分な結合列(contact_id)を作成されます
 
phonenumber 
    -id 
    -contact_id 
    -... 

ジョインテーブルは十分ではありませんか?

さらに、電話番号または連絡先を保存すると、結合テーブルは更新されますが、結合列は更新されません。では、なぜこの結合列はここにありますか?

ありがとうございました。私は解決策見つけ

答えて

1

:今

 
Class Contact { 
    @OneToMany(mappedBy="contact", targetEntity=PhoneNumber.class, orphanRemoval=false) 
    public Set getPhoneNumbers() { 
     return phoneNumbers; 
    } 
} 
 
Class PhoneNumber{ 
    @ManyToOne 
    @JoinTable(name="t_join_contact_phonenumber", [email protected](name="PHONENUMBER_ID"), [email protected](name="CONTACT_ID")) 
    public Contact getContact() { 
     return contact; 
    } 
} 

を、Hibernateは結合テーブルにのみ

 
t_join_contact_phonenumber 
    -CONTACT_ID 
    -PHONENUMBER_ID 

感謝を作成しています。

関連する問題