2013-03-05 59 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 
相關問題