0

ここで、データベース スキーマの設計方法について質問しました。

要約すると、連絡先とグループを含めることができるアドレス帳があります。グループにも連絡先を含めることができますが、グループと同じアドレス帳にある連絡先のみです。

アドレス帳アドレス
帳ID

連絡先
ID
アドレス帳 ID

グループ
ID
グループID

グループ To 連絡先
ID
アドレス帳 ID
連絡先 ID
グループ ID

多対多の関係テーブルにアドレス帳 ID を追加することで、アドレス帳が一致するように強制できます。ただし、私は休止状態に比較的慣れていないため、次のようになります。

  @Entity
  @Table(name = "Contact")
  public class Contact 
  {
    Addressbook addressbook;

    //----bidirectional association
    private List groups = new ArrayList();
    //----
  }

  @Entity
  @Table(name = "Group")
  public class Group 
  {
    Addressbook addressbook;
    //----bidirectional association
    private List contacts = new ArrayList();
    //----
  }

したがって、開始点として、上記の 2 つのテーブルがあり、コレクション内のオブジェクトを追加または変更するときにアドレス帳 ID の一致を強制する方法で、コレクションを hibernate によって制御する必要があります。

4

1 に答える 1

1

コレクション内の要素のタイプを指定し、注釈 ManyToMany を追加する必要があります

  @Entity
  @Table(name = "Contact")
  public class Contact 
  {

    @Id
    @GeneratedValue(GenerationType=AUTO)
    private Integer contact_id;

    Addressbook addressbook;

    //----bidirectional association
    //@ManyToMany
    //private List<Group> groups = new ArrayList<Group>();
    //----
  }

また、Contact にコレクション グループを追加する必要はないと思います。グループ テーブルから連絡先 ID でグループを選択できます。また、各テーブルに ID を追加する必要があります。

  @Entity
  @Table(name = "Group")
  public class Group 
  {
    @Id
    @GeneratedValue(GenerationType=AUTO)
    private Integer group_id;

    Addressbook addressbook;
    //----bidirectional association
    @ManyToMany
    private List<Contact> contacts = new ArrayList<Contact>();
    //----
  }
于 2011-08-05T12:21:37.270 に答える