Возможный дубликат:
Hibernate однонаправленная связь для многих - почему таблица соединений лучше?
В онлайн-документации Hibernate в разделе 7.2.3 "Один ко многим" он упомянул, что:
однонаправленная связь "один-ко-многим" по иностранному ключу - необычный случай, и не рекомендуется. Вам следует вместо этого используйте таблицу соединений для такого рода ассоциации.
Хотелось бы знать, почему? Единственное, что приходит мне на ум, это может создать проблемы во время каскадных удалений. Например, 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)
Вместо этого вы должны использовать таблицу соединений для такой ассоциации.