如何在HQL中从父级中删除一对多子级

时间:2010-09-06 09:09:42

标签: nhibernate hql

我有

class Parent
{
    IList<Child> Children;
}

class Child
{
}

删除Child时,我需要从引用它的任何Parents中删除对它的所有引用。

我怎么能在NHibernate中做到这一点?

Parent上没有FK Child,关系存储在第3个“链接”表中

由于

2 个答案:

答案 0 :(得分:2)

这不是父子关系。孩子只有一个父母(属于父母)。这是独立实体之间的多对多关系。这是一个重要的区别。

您实际上无法直接在HQL中从“父”中删除“子”,就像它现在设计的那样。这是您的选择:

  • 将“父母”加载到内存中,并从列表中删除“子”。
  • 将“孩子”的引用添加回“父母”。使另一个关系逆。当您删除“子”时,它实际上应该自动删除链接表中的项目,因为该链接将属于“子”。
  • 使用本机SQL删除链接。这不好,但也不是太糟糕,因为它是简单的标准sql。

答案 1 :(得分:1)

为了实现这一目标,需要建立某种关系,从Child Entity开始。

然后你可以简单地使用cascade-delete到它的3d(我猜这是一个多对多的)表。