JPA 一对多删除时 无法使子对象的外键置空

2个对象,person和department。一个部门对应多个人员

//部门这边使用注解配置一对多关系
@OneToMany(cascade = CascadeType.REMOVE, fetch = FetchType.LAZY, mappedBy = "person")
private Set sProducts = new HashSet(0);

问题是删除部门时顺带把部门下所有的人员都给删了,怎么设置才能使得删除部门时不删除人员,只是把人员的外键置空???

请注意,我使用的是jpa,不是hibernate

这个可能不能用cascade吧,可以用bulk update先设置人员外键为空,再删除部门。不过需要注意的是bulk update不会更新缓存。

十年之后,你不加这个就行 cascade = CascadeType.REMOVE,