2012-03-25 12 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にHibernate 3.5を使用しています。これは、関係を保持するテーブルConversation_Smsを作成します

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

おかげ

答えて

2

この質問は私のものです、 間違っています。

外部キーを会話テーブルに追加します。

 
Table_Conversation 

- id BIGINT 
- sms_id BIGINT FK REFERENCES SmsBean.id 

同じ会話(id = 123)に2つのSMSがあるとどうなりますか?これにより、同じIDを持つ2つの行が表示されます。

 
Table_Conversation 

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

だから私はこのアイデアを放棄し、Hibernateが道をお勧めします。このようになりました私が参加し、テーブルを使用しています。

0

はこれを試してみてください。 SmsエンティティにConversationフィールドを追加してmappedBy属性をOneToMany注釈に追加した場合、このテーブルは作成されませんでした..しかし、あなたが言ったように、これはあなたが望むものではありません..

関連する問題