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

  • 许多部门可以在中,一个父部门:
    @ManyToOne
    @JoinColumn(name = "ik_parent_department_id")
    private Department parentDepartment;
    
  • 一个父部门可以让许多部门:
    @OneToMany(mappedBy = "parentDepartment")
    private Set<Department> children = new HashSet<Department>(0);
    

  • 我要实现下一个:当我删除部门时,然后将此部门 null的所有 ik_parent_department_id 参数设置为。任何想法如何做到这一点?

    最佳答案

    您必须将 child 的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

    关于java - 在删除时在@OneToMany中的 hibernate 中设置null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8243400/

    10-10 23:47