Nhibernate 在HQL中,如何在给定子id的情况下从父级中删除一对多子级

Nhibernate 在HQL中,如何在给定子id的情况下从父级中删除一对多子级,nhibernate,hql,Nhibernate,Hql,我有 class Parent { IList<Child> Children; } class Child { } 类父类 { 孤独症儿童; } 班童 { } 删除子项时,我需要从引用它的任何父项中删除对它的所有引用 我怎样才能在NHibernate做到这一点 Child上没有ParentFK,关系存储在第三个“link”表中 感谢要实现这一点,需要有某种关系,从子实体开始 然后您可以简单地对其3d(我猜这是一个多对多)表使用级联删除。要实现这一点,需要有某种类型的关

我有

class Parent
{
    IList<Child> Children;
}

class Child
{
}
类父类
{
孤独症儿童;
}
班童
{
}
删除
子项
时,我需要从引用它的任何
父项
中删除对它的所有引用

我怎样才能在NHibernate做到这一点

Child
上没有
Parent
FK
,关系存储在第三个“link”表中


感谢

要实现这一点,需要有某种关系,从子实体开始


然后您可以简单地对其3d(我猜这是一个多对多)表使用级联删除。

要实现这一点,需要有某种类型的关系,从子实体开始


然后,您可以简单地对其3d(我猜这是一个多对多)表使用级联删除。

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

实际上,在HQL中,您不能按照现在的设计方式直接从“父级”中删除“子级”。以下是您的选择:

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

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

      实际上,在HQL中,您不能按照现在的设计方式直接从“父级”中删除“子级”。以下是您的选择:

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

      啊,你说得对,这对很多人来说都是一个人。啊!有没有一种方法可以在不将关系映射到子端的情况下执行此操作?在我的领域里,把它放在那里是没有意义的。我想我可以把它私有化,但它感觉像是一个黑客。它似乎在你的域中是有意义的,因为你需要一个操作来删除它。。。我只想把它添加到映射中。如果你真的不想这样做,也许你可以在DB中设置FK上的级联…啊,你是对的,这是一个人对很多人。啊!有没有一种方法可以在不将关系映射到子端的情况下执行此操作?在我的领域里,把它放在那里是没有意义的。我想我可以把它私有化,但它感觉像是一个黑客。它似乎在你的域中是有意义的,因为你需要一个操作来删除它。。。我只想把它添加到映射中。如果你真的不想这样做,也许你可以在你的FK上的DB设置级联…是的,我意识到这是一个很多,是愚蠢的。我在
      Child
      中添加了一个属性,但只是将其设置为私有,以便允许删除自动整理自己,而不暴露收集的内容。是的,我意识到这对许多人来说是一个陷阱,这太愚蠢了。我在
      Child
      中添加了一个属性,但只是将其设置为私有,以便允许删除自动整理自己,而无需公开集合