我使用的是CascadeType.MERGE,但生成的sql在外键中不包含任何ON UPDATE。这是我的代码
@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;
}
这里有什么遗漏
答案 0 :(得分:1)
CascadeType.MERGE是一个JPA结构,它告诉提供者在Employee上调用merge时什么时候也调用引用的Address上的merge。
ON UPDATE CASCADE是一个数据库设置,似乎与CascadeType.merge没有任何关系。如果引用的主键发生更改,它会导致数据库更新外键。由于不允许更改JPA中的主键,因此此设置没有意义。如果您有一个可能需要更改的自然PK,建议您使用排序作为唯一标识符。