如何更新删除父项时的子项
问题描述:
我的要求是当我删除父项时,子项不应该被删除而是删除子项,子项栏department_ID
之一是外键必须用某个值更新,比如说一个部门(Parent Table)包含许多员工和员工(子表)有Department_ID
作为外键列。问题是即时通信面临时,我删除父表没有任何反映在孩子上因为我已使updatable=false
如果我会使它成为真然后在删除父,子列设置为空或如果我更新父母,那么也列设置为null这是违反要求,所以这就是为什么我把它假。我不希望孩子更新时,父母作出任何更改只应反映在删除操作上,仅在一列上进行更改。请帮我,我该怎么办?感谢如何更新删除父项时的子项
这是我的父表的部门代码
@Id
@Column(name = "DEPARTMENT_ID")
private String departmentId;
@OneToMany(fetch = FetchType.EAGER)
@JoinColumn(name = "DEPARTMENT_ID",insertable=false,updatable=false)
Collection<Employee> employeeList;
这是我的孩子Employee表
@Id
@Column(name = "EMPLOYEE_NUMBER")
private int employeeNumber;
@Column(name = "FIRST_NAME")
private String firstName;
@Column(name = "LAST_NAME")
private String lastName;
@Column(name = "DEPARTMENT_ID")
private String departmentId;
答
让孩子端来maintian一个一对多的关系,所以你需要添加mappedBy attribute to @OneToMany。如下面
@Id
@Column(name = "DEPARTMENT_ID")
private String departmentId;
@OneToMany(fetch = FetchType.EAGER, mappedBy="departmentId")
@JoinColumn(name = "DEPARTMENT_ID",insertable=false,updatable=false)
Collection<Employee> employeeList;
保持relationsip:
employee.departmentId = newDepartmentId; //or set it null to detach from the old dept