很抱歉,如果这很明显,但我们已经为此绞尽脑汁好几天了。
考虑三个实体,Parent、Child 和 X:
Parent 与 Child 具有 @OneToMany 关系,设置为级联删除和孤儿删除 = true。
Child 与 Parent 有一个 @ManyToOne 关系,可选 = false,进一步的关系是 @NotNull 和 @JoinColumn 有 nullable = false。
X 与 Child 具有 @ManyToOne 关系,可选 = true。
这是我们在删除父对象时最理想的情况。我们希望删除级联并删除与已删除父级相对应的所有子行。到目前为止没有问题。但我们也希望任何引用任何已删除 Child 的 X 都将 Child 关系取消。我们不想删除任何 X,我们只想取消关系。这与它是一种“可选”关系是一致的。
我们如何在 Hibernate 中做到这一点?理想情况下,我们希望它是声明性的,这样我们的业务逻辑就不必“记住”来消除这些关系。事实上,如果我们要使用级联,它确实必须是声明性的,因为在我们遇到要取消的可选关系之前可能存在许多级别的级联。
有什么提示吗?我们被难住了......