如果这很明显,很抱歉,但我们已经为此挠头好几天了。
考虑三个实体,父实体、子实体和X:
Parent与Child有@OneToMany关系,设置为级联删除,孤立删除=true。
Child与Parent的关系为@ManyToOne,optional=false,此外,该关系为@NotNull,@JoinColumn的关系为nullable=false。
X与Child具有@ManyToOne关系,可选=true。
以下是我们在删除Parent时最希望发生的情况。我们希望删除级联并删除与已删除的父行相对应的所有子行。到目前为止没有问题。但我们也希望任何引用任何已删除Child的X将Child关系删除。我们不想删除任何X,我们只想清空关系。这与它是一种"可选"关系是一致的。
我们如何在Hibernate中做到这一点?理想情况下,我们希望它是声明性的,这样我们的业务逻辑就不必"记住"这些关系为空。事实上,如果我们要使用级联,它真的必须是声明性的,因为在我们遇到要清空的可选关系之前,可能有很多级别的级联。
有什么提示吗?我们被难住了。。。。
使用inverse = false
将集合映射到Child类中的X。