2016-12-30 12 views
0

私は関係を理解し​​ていると思っていました。しかし、今..私は確信していません。正しい注釈を追加する際に問題があります。JPA relation OneToMany

私はクラスMembersとRelationsを持っています。

に関係

private GT_Member Mother; 

private GT_Member Father; 

private List<GT_Member> children; 

あるメンバーが母や父(彼のセックスを参照)など、いくつかの関係にあることができるが、彼は唯一の子として一つの関係にあることができます。

母親と父親に@OneToManyと注釈を付けることを考えました。

しかし、リストに@OneToOneとして注釈を付けることができるかどうかはわかりません。

答えて

1

これは、データベーススキーマの正しいエンティティリレーションシップモデルをモデル化し、ORM(オブジェクトリレーションシップモデル)を視覚化する際の問題のようです。

まずメンバーとリレーションシップのクラスで始めるのではなく、システム内の支配的なデータエンティティを確認してください。そして、彼らはお互いにどのように関係していますか? 個人的には、関係は良いJPAエンティティになるとは思わない。 メンバーはより良いエンティティのように見え、関係を具体化することができます 1人の父親と1人の母親を仮定すると、1対多数は間違っているようですが、父または母親が多くの子供を持つことができるので、正しい注釈は@ManyToOneでなければなりません。

子供は間違いなくOneToManyです。はい、リストの子に@OneToManyとしてアノテーションを付けることができます。

メンバーは以下の性質を持つことができます:

@Entity 
    public class Member implements Serializable{ 
    @ManyToOne 
    private Member mother; 
    @ManyToOne 
    private Member father; 
    @OnetoMany 
    private List<Member> children; 
} 

は、これはあなたのユースケースの両方を解決し、この単純な例の関係クラスでは必要ありません。 これが役立つことを願っています。

+0

リレーションエンティティの採用は、リレーションのステータスに関する情報を保存するためです。ドンク私はすべての結婚などの情報を格納します。エンティティの関係は、タイプ(中立、結婚、婚約者など...)のような他のフィールドがあります。 – VANILKA

+0

これはエンティティ内でモデル化するのに興味深い問題のようです。あなたが提供した情報はより役立ちます。しかし、この場合であっても、結婚歴(結婚している、結婚している)と呼ばれるこの多価値項目と、次にタイプのメンバー・パートナーの別のフィールドを持つことによって、別の関係エンティティを持つことを避けることができます。これはヌル(婚姻ステータスがシングルの場合)、実際のメンバー(婚姻ステータスが結婚または婚約)である可能性があります。 – Gangz

0

リレーションエンティティの採用は、リレーションのステータスに関する情報を保存するためです。ドンク私はすべての結婚などの情報を格納します。エンティティの関係は、タイプ(中立、結婚、婚約者など...)のような他のフィールドがあります。

+0

このセクションに回答を投稿してください – SpringLearner

関連する問題