【问题标题】:Child object is not deleted子对象没有被删除
【发布时间】:2019-03-30 22:55:37
【问题描述】:

我有级联删除子对象的问题。我使用 EclipseLink。 当父表中的主键也是子表中的主键时,一对一关系的映射。

 class Parent {
    @Column(name = "PARENT_ID", unique = true, nullable = false)
    private Long id;

    @OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "parent")
    private Child child;

}

class Child {
    @Id
    @JoinColumn(name = "PARENT_ID", unique = true)
    private Parent childId;
}

当我尝试“在 :parentIds 中从父父级 WHERE parent.id 中删除”时,我得到了找到子对象的信息。请给我一些建议好吗?

【问题讨论】:

    标签: java eclipselink jpql


    【解决方案1】:

    这个问题通常发生在 OneToOne 类型的映射中,由于从父到子的外键约束,因为子实体将指向一个不存在的实体。您必须首先摆脱引用,通过查找实体及其映射,将引用设置为 null,然后您可以合并/保留/删除它。

    这里问了一个类似的问题,请从这里寻求帮助: JPA orphan removal does not work for OneToOne relations

    【讨论】:

      【解决方案2】:

      JPQL 批量更新和删除不会将对象加载到内存中,因此您有责任自行删除或修复任何引用。在这种情况下,您需要先运行批量删除以清除子项,然后才能删除父项。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-09
        • 1970-01-01
        • 2021-06-06
        • 2021-03-13
        • 2018-12-27
        相关资源
        最近更新 更多