当使用spring data jpa进行多对一关系管理的时候,有时需要删除父实体但保留子实体(弱关系) 处理方式有两种:
- 数据库支持情况下,将外键修改为
on delete set null, 但是spring data jpa中没有相关支持,所以需要手动修改数据库外键。参见stackoverflow上的问题 - 使用删除之前,遍历修改,参考stackoverflow解决方案
for (Department child : parent.getChildren()) {
child.setParentDepartment(null);
}
session.delete(parent);