2

我正在使用 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;
}

这里有什么遗漏吗

4

1 回答 1

1

CascadeType.MERGE 是一个 JPA 构造,它告诉提供者当您在 Employee 上调用 merge 以及在引用的 Address 上调用 merge 时会发生什么。

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

于 2012-08-13T15:27:43.487 回答