Отображение составного внешнего ключа в спящем режиме - PullRequest
0 голосов
/ 05 августа 2011

Я задал вопрос здесь о том, как спроектировать схему базы данных.

Итак, у меня есть адресная книга, которая может содержать контакты и группы.Группы также могут содержать контакты, но только контакты, которые находятся в той же адресной книге, что и они.

Адресная книга Идентификатор адресной книги

Контакт Я быИдентификатор адресной книги

Группа Я быИдентификатор группы

Групповой контакт Я быИдентификатор адресной книгиКонтактный идентификаторИдентификатор группы

Добавляя идентификатор адресной книги в таблицу отношений многие ко многим, я могу обеспечить соответствие адресных книг.Я, однако, относительно новичок в спящем режиме, поэтому:

  @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 таким образом, чтобы обеспечитьчто идентификатор адресной книги совпадает при добавлении или изменении объектов в коллекции.

1 Ответ

1 голос
/ 05 августа 2011

Необходимо указать тип элементов в коллекции и добавить аннотацию 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>();
    //----
  }

И я думаю, что нет необходимости добавлять группы сбора в контакт. Вы можете выбрать группы по идентификатору контакта из таблицы групп. Также вам нужно добавить идентификаторы в каждую таблицу.

  @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>();
    //----
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...