我已经定义了两个类之间的多对多关系。 事件和人(在单独的数据库表person_event中定义)。 现在,假设我想删除一个人,因此所有与事件相关的关联也必须从person_event表中删除。换句话说,我想要级联 ON DELETE。
让我们考虑一个场景:
现在,假设我使用Hibernate.delete()删除事件1,不仅如此 它是删除event1,还是关联person_event1-4,还有 person4!
问题是person4被另一个表引用并抛出外部约束异常... 我如何配置NHibernate只删除事件和关联person_event?
答案 0 :(得分:2)
我认为如果你在多对多地图上将Cascade设置为none,你应该能够得到你想要的。
它只会删除与事件有关的条目,但不会将删除效果级联到Person。
答案 1 :(得分:0)
我不熟悉Hibernate,但我认为你想在调用Hibernate.delete()之前通过所讨论的person
对象从任何与之关联的人中删除你的事件。
这会进入对象生命周期问题,我认为你需要仔细思考。例如,如果event1与person1和person2以及person4相关联,并且您删除了person1,则您可能不希望自动删除event1。