0

我在这里问了一个关于如何设计数据库模式的问题。

总之,我有一个可以包含联系人和组的地址簿。组也可以包含联系人,但只能包含与他们在同一地址簿中的联系人。

通讯录
通讯录编号

联系人
ID
地址簿 ID


id
组 id

Group To Contact
id
Addressbook id
Contact id
Group 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();
    //----
  }

因此,在开始时,我将拥有上述两个表,并且我需要由 hibernate 以一种在添加或修改集合中的对象时强制地址簿 ID 匹配的方式来控制集合。

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>();
    //----
  }

而且我认为,没有必要将集合组添加到联系人。您可以从组表中按联系人 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 回答