2013-01-04 4 views
0

У меня есть таблица персональных данных (PersonID) и таблица адресов (AddressID). Я хочу создать новую таблицу Join, называемую Person_Address, которая отображает Person->Adress с использованием отношения ManyToMany, и я должен указать первичный ключ как состав двух первичных ключей (PersonID - AddressID).Hibernate - Join Table with Composite ID

Как это сделать, используя синтаксис Hibernate HBM?

+0

Эта ссылка может быть вам полезна - http://docs.jboss.org/hibernate/stable/orm/manual/en-US/html/components.html#components-compositeid –

ответ

1

Используйте @ManyToMany и забудьте о соединении столов в спящем режиме. Таблица соединений будет существовать в вашей базе данных, но не в вашем коде, Hibernate знает, как с этим справиться.

Пример:

Person класс (как владелец отношений):

@ManyToMany(targetEntity = Address.class, cascade = { CascadeType.PERSIST, CascadeType.MERGE }, fetch = fetchType.LAZY) 
@JoinTable(name = "person_address", joinColumns = @JoinColumn(name = "PersonID"), inverseJoinColumns = @JoinColumn(name = "AddressID")) 
List<Address> addresses; 

Адрес класса (если это требуется):

@ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE }, mappedBy = "addresses", targetEntity = Person.class, fetch = FetchType.LAZY) 
List<Person> persons; 

Edit:

Этот link поможет вам в XML-сопоставлении много-ко многим.

+0

Спасибо за ответ, его просто что я не использую Аннотации ... я должен указать это в файле HBM, поэтому я ищу синтаксис – user1948363

+0

Хорошо, позвольте мне попытаться предоставить и пример с XML :) – jelies

+0

Отлично, спасибо :) – user1948363