【问题标题】:Create Foreign key ON UPDATE CASCADE in JPA (eclipselink)在 JPA 中创建外键 ON UPDATE CASCADE (eclipselink)
【发布时间】:2012-08-08 08:47:59
【问题描述】:

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

这里有什么遗漏

【问题讨论】:

    标签: java database jpa jpa-2.0 eclipselink


    【解决方案1】:

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

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

    【讨论】:

    • 我一直在试图找到它说主键在 JPA 规范中不能更改的地方。你有这方面的参考吗?
    • link 中的答案引用了 JPA 规范。
    猜你喜欢
    • 2012-08-07
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 2015-01-27
    相关资源
    最近更新 更多