Зададох въпрос тук за това как да проектирате схема на база данни.
В обобщение имам адресна книга, която може да съдържа контакти и групи. Групите също могат да съдържат контакти, но само контакти, които са в същата адресна книга като тях.
Адресна книга
Идент. № на адресната книга
Контакт
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();
//----
}
Така че в начална точка ще имам горните две таблици и ще имам нужда колекциите да се контролират от хибернация по начин, който ще наложи съвпадението на идентификатора на адресната книга при добавяне или модифициране на обекти в колекцията.