Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JPA中的更新级联上创建外键(eclipselink)_Java_Database_Jpa_Jpa 2.0_Eclipselink - Fatal编程技术网

Java 在JPA中的更新级联上创建外键(eclipselink)

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)

我正在使用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)
    private Address address;
}

这里是否缺少任何内容

CascadeType.MERGE是一个JPA构造,它告诉提供者当您在Employee上调用MERGE时,也会在引用的地址上调用MERGE


更新时CASCADE是一个数据库设置,它似乎与CascadeType.merge没有任何关系。如果引用的主键发生更改,则会导致数据库更新外键。由于不允许在JPA中更改主键,因此此设置没有意义。如果您有一个可能需要更改的自然pk,建议您对唯一标识符使用排序。

我一直在试图找到JPA规范中主键不能更改的地方。你有没有提到这一点?答案中提到了JPA规范。