我已经在我的 C# Web 应用程序中使用 NHibernate 完成了 OR 映射。当我想获取所有叶节点时,我使用如下查询语句:
List<NODE> LeafList =(List<NODE>) Session.CreateQuery("from NODE as node where node.Id not in (select FatherNodeId from NODE)").List<NODE>();
但是,查询后我得到 LeafList 的计数等于 0。我的数据库是这样的:
Id FatherNodeId
1 NULL
3 1
4 3
5 3
所以,我的预期结果应该是 id 为 4 或 5 的节点。更令人困惑的是,如果我将“not in”更改为“in”,则查询运行良好,并返回 id 为 1 或 3 的节点。
那么我的不在子查询中有什么问题?