2013-03-05 58 views
1

我的要求是当我删除父项时,子项不应该被删除而是删除子项,子项栏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; 

回答

0

让孩子端来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 
相关问题