JPA孤儿删除不适用于OneToOne关系

有没有人有这个问题的解决方法: https : //hibernate.atlassian.net/browse/HHH-9663 ?

我也面临着类似的问题。 当我在两个实体之间创建单向(无反向引用)一对一关系并将orphan remove属性设置为true时,在将引用设置为null后,引用的对象仍在数据库中。

以下是示例域模型:

@Entity public class Parent { ... @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true) @JoinColumn(name = "child_id") private Child child; ... } @Entity public class Child { ... @Lob private byte[] data; ... } 

我目前正在通过手动删除孤儿来解决这个问题。

级联仅对从父级传播到子级的 实体状态转换有意义。 在您的情况下,父母实际上是这个协会的孩子(拥有FK)。

请尝试使用此映射:

 @Entity public class Parent { ... @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "parent") private Child child; ... } @Entity public class Child { @OneToOne @JoinColumn(name = "parent_id") private Parent parent; ... @Lob private byte[] data; ... } 

要级联孤儿删除,您现在需要:

 Parent parent = ...; parent.getChild().setParent(null); parent.setChild(null);