代码之家  ›  专栏  ›  技术社区  ›  Andrew Bullock

如何从HQL中给定子ID的父级中移除一对多子级

  •  0
  • Andrew Bullock  · 技术社区  · 14 年前

    我已经得到

    class Parent
    {
        IList<Child> Children;
    }
    
    class Child
    {
    }
    

    删除一个 Child 我需要从任何 Parents 这就是参考。

    我怎么能在NHibernate做这个?

    没有 Parent FK 孩子 ,关系存储在第三个“链接”表中

    谢谢

    2 回复  |  直到 14 年前
        1
  •  2
  •   Stefan Steinegger    14 年前

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

    实际上,您不能像现在设计的那样直接在hql中从“parent”中删除“children”。这是您的选择:

    • 将“parents”加载到内存中,并从列表中删除“child”。
    • 将“child”中的引用添加回“parents”。使另一个关系变反。当您删除一个“子”时,它实际上应该自动删除链接表中的项目,因为此时链接将属于“子”。
    • 使用本机SQL删除链接。这不好,但也不坏,因为它是普通的标准SQL。
        2
  •  1
  •   Bertvan    14 年前

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

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