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 のノードが返されることです。
では、サブクエリにないのは何が問題なのですか?