我有两个表(Rule和Object)通过多对多关系链接。规则可以与任意数量的对象相关联,也可以与所有对象相关联。
我通常会使用链接表构建此关联,如果关联的规则要与所有对象关联,则Object_ID列将设置为NULL。任何实际上不会引用真实对象的值都可以。
这样,我可以写一个Select来查找与这样的对象相关的所有规则:
SELECT * FROM Rule JOIN RuleObject_Link on Rule.ID = RuleObject_Link.RuleID WHERE RuleObject_Link.ObjectID = <the object ID> or RuleObject_Link.ObjectID IS NULL
问题是我正在使用NHibernate。我无法找到在自动关系/集合结构中表示“所有对象”的方法。
是否有可能使用NHibernate的多对多关系建立这样的关系?
或者我是否必须手动配置链接表并自行处理连接?
答案 0 :(得分:0)
最好向Rule
添加一个单独的布尔字段,表示它普遍适用于所有Object
个对象(顺便说一句Object
是一个非常糟糕的类名。)
这实际上不参与关系映射,获取对象的整个规则列表需要查询而不是从映射中自动填充,但我现在想不出更好的东西。