JPA规范中对此进行了记录。
第 节(节选):
应用于实体X的刷新操作的语义如下:
第 节(节选):
应用于实体X的persist操作的语义如下:
(可选)是否 应用于已从关系中删除的实体,以及是否将删除操作应用于这些实体。
如果一个实体从删除@OneToMany
集合或相关实体是由非关联@OneToOne
的关联,这种关联的实体可以 ,如果orphanRemoval
设置为true
。
然后,Hibernate将部门D1
与数据库同步,发现该部门E
不在员工列表中,并标记E
为删除。然后,它D2
与数据库同步,并将PERSIST
操作级联到员工列表(第3.2.4节)。由于E
现在位于此列表中,因此级联将应用于此列表,并且Hibernate取消安排删除操作的时间表(第3.2.2节)。
您可能还想看看这个问题。
“如果orphanRemoval
设置为true
这种关系的反面会发生什么?”
您已经将它设置在反面(反面是声明的那一面mappedBy
)。如果你的意思是,如果它被设置在什么 其他 方面(@ManyToOne
在这种情况下),那就不是为什么没有在这样的属性意义和的@ManyToOne
和@ManyToMany
。