2012-01-18 10 views
1

は、私は、例えば、以下のエンティティを定義してみましょう:JPA内の2つのエンティティに複数のエンティティ間の関係を設定できますか?

@Entity 
public class Box{ 

    @ManyToOne 
    Apple apple; 

    @ManyToOne 
    Orange orange; 

} 

@Entity 
public class Apple { 

    @OneToMany 
    List<Box> boxes; 

    @ManyToMany 
    List<Orange> OrangeBoxMates; 
} 


@Entity 
public class Orange { 

    @OneToMany 
    List<Box> boxes; 

    @ManyToMany 
    List<Apple> appleBoxMates; 

} 

は、多くの注釈が省略されているという事実を無視します。私は例としてこのコードを使用しています。

今、リンゴとオレンジの間に単方向性の関係を追加したいと考えています。

@Entity 
public class Apple { 

    @OneToMany 
    List<Box> boxes; 

    @ManyToMany 
    List<Orange> OrangeBoxMates; 

    @ManyToMany 
    List<Orange> OrangeFriends; 
} 


@Entity 
public class Orange { 

    @OneToMany 
    List<Box> boxes; 

    @ManyToMany 
    List<Apple> appleBoxMates; 


} 

何かできない理由はありますか?

+0

いいえ、理由はありません。適切な注釈と属性を使用すれば、すべてが正常に機能します。 –

+0

デフォルトではクラス名であり、衝突が発生するため、確認するには、結合列のデフォルト名を使用できません。だから、私は結合列の名前を明示的に(そして違う笑)、すべてがうまくいくでしょうか? – b3bop

+0

はい、すべてが問題ありません。 –

答えて

0

Hibernateは、デフォルトの結合列を使用しているため、両方の関連で同じであるため、Appleの2つの@ManyToManyの関連付けの違いを知ることはできません。 AppleアソシエーションをOrangeにカスタマイズして、DB内の別の列(別々のFK)にマッピングできるとします。

関連する問題