ツリー構造とフィルタをツリールートに適用する際に問題があります。私は、ツリーの非常にルートにフィルタを適用するNHibernateの基準を使用してクエリを作成する必要があります(複数のツリーが存在する可能性があり、ルートのIDを指定する必要があります)。NHibernateと再帰的クエリフィルタ
WITH c (Node, Parent, Child, LEVEL)
AS (SELECT N.CatalogNodeId ,
N.ParentCatalogNodeId ,
N.CatalogNodeId ,
CAST(0 AS BIGINT)
FROM CatalogNode N
WHERE N.ParentCatalogNodeId IS NULL
UNION ALL
SELECT C.Node ,
N.ParentCatalogNodeId ,
N.CatalogNodeId ,
C.Level + 1
FROM CatalogNode N
JOIN c ON C.Child = n.ParentCatalogNodeId
)
SELECT
c.Child
FROM c
JOIN dbo.CatalogItem CI ON Ci.CatalogNodeId = c.Child
JOIN dbo.Item I ON I.ItemId = CI.ItemId
WHERE C.Node = @Node_Id
このクエリは、私がしたい正確に何を返しますが、それは大きなクエリの一部のみです:普通のSQLでは、これはかなったようになります。私が必要とするのは、同じ結果を作成するために基準apiを使うことです:与えられたルートIDを持つアイテムのリスト(ツリー構造は必要ありません。これは "search"コマンドの結果です。必須)。 Unfortunatelly私はNHibernateの専門家ではないので、...任意のガイド、アイデアが役立つだろう。
私は言ったように、これはより大きな処理の一部であり、残りは基準APIを使用すると述べました。私の知る限り、単純なSQLの広告基準APIを1つのクエリに混在させることはできませんか?そうでないと、既存のコードにこのフィルタを追加する方法を見つける必要があります。 – user817409
@ user817409:同じクエリでそれらを混在させることはできませんが、それは正しいです。しかし、ネイティブNH APIのどれも再帰クエリをサポートしていないので、必要な場合はSQLに悩まされています。 –