使用级联删除时,如何处理Hibernate中的可选关系?

使用级联删除时,如何处理Hibernate中的可选关系?,hibernate,foreign-key-relationship,nhibernate-cascade,Hibernate,Foreign Key Relationship,Nhibernate Cascade,很抱歉,如果这是显而易见的,但我们已经为此挠头好几天了 考虑三个实体:父实体、子实体和X: 父项与子项具有@OneToMany关系,设置为级联删除和孤立项删除=true 子项与父项有@manytone关系,可选=false,并且该关系为@NotNull,@JoinColumn有null=false X与子项有@manytone关系,可选=true 下面是我们理想情况下希望在删除父项时发生的情况。我们希望删除操作级联并删除与已删除父行对应的所有子行。到目前为止没有问题。但我们也希望引用任何已删除子

很抱歉,如果这是显而易见的,但我们已经为此挠头好几天了

考虑三个实体:父实体、子实体和X:

父项与子项具有@OneToMany关系,设置为级联删除和孤立项删除=true

子项与父项有@manytone关系,可选=false,并且该关系为@NotNull,@JoinColumn有null=false

X与子项有@manytone关系,可选=true

下面是我们理想情况下希望在删除父项时发生的情况。我们希望删除操作级联并删除与已删除父行对应的所有子行。到目前为止没有问题。但我们也希望引用任何已删除子项的任何X都将子项关系置空。我们不想删除任何X,我们只想消除关系。这与它是一种“可选”关系是一致的

我们在Hibernate中如何做到这一点?理想情况下,我们希望它是声明性的,这样我们的业务逻辑就不必“记住”这些关系。事实上,如果我们要使用级联,它实际上必须是声明性的,因为在我们遇到要取消的可选关系之前,可能有很多级别的级联


有什么提示吗?我们被难住了……

使用
inverse=false将集合映射到子类中的X
使用
inverse=false
将集合映射到子类中的X