为什么建议避免在外键上进行单向一对多关联?
可能的重复:
休眠单向一对多关联 - 为什么连接表更好?
在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)
应改为将联接表用于此类关联。