2012-07-11 43 views
2

对不起,如果这是显而易见的,但我们现在已经好几天了。在使用级联删除时,如何处理Hibernate中的可选关系?

考虑三个实体,父母,子女和X:

家长有@OneToMany与儿童的关系,成立了以级联删除和孤儿去除=真。

子级与可选= false的Parent有@ManyToOne关系,进一步的关系是@NotNull,@JoinColumn有nullable = false。

X与@ManyToOne的关系可选为true。

以下是我们理想情况下在删除父项时发生的情况。我们希望删除级联并删除与删除的父对应的所有子行。到目前为止没有问题。但是我们也希望任何引用任何被删除的孩子的X来消除孩子关系。我们不想删除任何X,我们只是想清除关系。这与“可选”关系是一致的。

我们如何在Hibernate中做到这一点?理想情况下,我们希望它是声明式的,所以我们的业务逻辑不必“记住”将这些关系排除在外。实际上,如果我们要使用级联,那么它确实必须是声明式的,因为在我们遇到可选关系之前可能会有多级级联。

任何提示?我们被难倒了....

回答

0

将集合映射到Child类中的X,并使用inverse = false