Возможный дубликат:
Hibernate однонаправленная ассоциация "один ко многим" - почему таблица соединения лучше?
В онлайн-документации Hibernate в разделе 7.2.3 One-to-many упоминается, что:
однонаправленная ассоциация «один ко многим» для внешнего ключа является необычным случаем и не рекомендуется. Вместо этого вы должны использовать таблицу соединений для такого рода ассоциации.
Я хотел бы знать, почему? Единственное, что приходит мне на ум, это может создать проблемы при каскадном удалении. Например, Person ссылается на адрес отношения «один ко многим» на внешнем ключе, и адрес отказывается удаляться до человека.
Кто-нибудь может объяснить обоснование рекомендации?
Вот ссылка на содержание справочного документа: 7.2.3. Один ко многим
Я скопировал фактическое содержание здесь:
Однонаправленная ассоциация «один ко многим» для внешнего ключа является необычным случаем и не рекомендуется.
<class name="Person"> <id name="id" column="personId"> <generator class="native"/> </id> <set name="addresses"> <key column="personId" not-null="true"/> <one-to-many class="Address"/> </set> </class> <class name="Address"> <id name="id" column="addressId"> <generator class="native"/> </id> </class>
create table Person (personId bigint not null primary key) create table Address (addressId bigint not null primary key, personId bigint not null)
Вместо этого вы должны использовать таблицу соединений для такого рода ассоциации.