一尘不染

在删除时在@OneToMany中的休眠中设置null

hibernate

我有一个部门实体,其关系如下:

  1. 许多部门 可以在 一个父部门中
        @ManyToOne
    @JoinColumn(name = "ik_parent_department_id")
    private Department parentDepartment;
  1. 一个上级部门 可以有 多个部门
        @OneToMany(mappedBy = "parentDepartment")
    private Set<Department> children = new HashSet<Department>(0);

我想实现下一个:当我 删除 一个 部门 ,那么 ik_parent_department_id 所有的参数 孩子 这个的
部门 设置为 。任何想法如何做到这一点?


阅读 226

收藏
2020-06-20

共1个答案

一尘不染

您必须将子级的ik_parent_department_id显式设置为null。

Department parentDepartment = (Department) session.load(Department.class, id);
session.delete(parentDepartment);
for (Department child : parentDepartment.getChildren()){
    child.setParentDepartment(null);
} 
session.flush();

进行级联时,您只能删除子级Departments

2020-06-20