首页 > 解决方案 > 子对象没有被删除

问题描述

我有级联删除子对象的问题。我使用 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 中删除”时,我得到了找到子对象的信息。你能给我一些建议吗?

标签: javaeclipselinkjpql

解决方案


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

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


推荐阅读