2012-08-11 67 views
2

我正在使用CascadeType.MERGE,但生成的SQL在外鍵中不包含任何ON UPDATE。這裏是我的代碼在JPA(eclipselink)中創建外鍵ON UPDATE CASCADE

@Entity 
public class Address { 
    @Id 
    private int id; 

    private String address; 
} 

@Entity 
public class Employee { 
    @Id 
    private int empId; 

    @OneToOne(cascade = CascadeType.MERGE) 
    private Address address; 
} 

,請問有什麼在這裏失蹤

回答

1

CascadeType.MERGE是JPA結構,它告訴你時所說的合併對員工也呼籲引用地址合併提供商。

ON UPDATE CASCADE是一個數據庫設置,似乎與CascadeType.merge沒有任何關係。如果引用的主鍵更改,它會導致數據庫更新外鍵。由於不允許更改JPA中的主鍵,因此此設置沒有意義。如果您有可能需要更改的自然pk,建議您使用唯一標識符的排序。

+0

我一直在試圖找到它說的主鍵不能在JPA規範中更改。你有參考嗎? – Namphibian 2012-09-17 12:43:52

+0

這個[link](http://stackoverflow.com/a/2217064/2499238)中的答案引用了JPA規範。 – 2015-01-05 18:26:12