Java 在JPA中的更新级联上创建外键(eclipselink)
我正在使用CascadeType.MERGE,但生成的sql在外键中不包含任何更新。这是我的密码Java 在JPA中的更新级联上创建外键(eclipselink),java,database,jpa,jpa-2.0,eclipselink,Java,Database,Jpa,Jpa 2.0,Eclipselink,我正在使用CascadeType.MERGE,但生成的sql在外键中不包含任何更新。这是我的密码 @Entity public class Address { @Id private int id; private String address; } @Entity public class Employee { @Id private int empId; @OneToOne(cascade = CascadeType.MERGE)
@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构造,它告诉提供者当您在Employee上调用MERGE时,也会在引用的地址上调用MERGE
更新时CASCADE是一个数据库设置,它似乎与CascadeType.merge没有任何关系。如果引用的主键发生更改,则会导致数据库更新外键。由于不允许在JPA中更改主键,因此此设置没有意义。如果您有一个可能需要更改的自然pk,建议您对唯一标识符使用排序。我一直在试图找到JPA规范中主键不能更改的地方。你有没有提到这一点?答案中提到了JPA规范。