在JPA(eclipselink)中创建外键ON UPDATE CASCADE
问题描述:
我正在使用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;
}
,请问有什么在这里失踪
答
CascadeType.MERGE是JPA结构,它告诉你时所说的合并对员工也呼吁引用地址合并提供商。
ON UPDATE CASCADE是一个数据库设置,似乎与CascadeType.merge没有任何关系。如果引用的主键更改,它会导致数据库更新外键。由于不允许更改JPA中的主键,因此此设置没有意义。如果您有可能需要更改的自然pk,建议您使用唯一标识符的排序。
我一直在试图找到它说的主键不能在JPA规范中更改。你有参考吗? – Namphibian 2012-09-17 12:43:52
这个[link](http://stackoverflow.com/a/2217064/2499238)中的答案引用了JPA规范。 – 2015-01-05 18:26:12