我对级联删除子对象有问题。我使用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中删除”时,我得到有关找到子对象的信息。你能给我一些建议吗?
答案 0 :(得分:2)
由于从父级到子级的外键约束,此问题通常在OneToOne类型的映射中发生,因为子级实体将指向不存在的实体。您必须首先通过找到实体及其映射来摆脱引用,将引用设置为null,然后才能合并/持久性/删除引用。
这里提出了类似的问题,请从这里寻求帮助: JPA orphan removal does not work for OneToOne relations
答案 1 :(得分:1)
JPQL批量更新和删除不会将对象加载到内存中,因此您有责任自己删除或修复任何引用。在这种情况下,您需要先进行批量删除以清除子项,然后才能删除其父项。