これは次の質問に似ています: NHibernate - Implement "NOT IN" query using ICriteria
しかし、それは私のソリューションではうまくいきません。
注文があります:
class Order
{
DateTime CreatedDate { get; set;}
Person CreatedBy { get; set; }
}
そして人:
class Person
{
string Name { get; set;} // etc.
}
日付範囲内に注文がないすべての人を取得したいと考えています。SQL は次のようになります。
SELECT *
FROM Person
WHERE Id NOT IN (SELECT PersonId
FROM Order
WHERE CreatedDate BETWEEN '2012-01-01' and '2012-01-31')
上記の質問で提供されたソリューションを使用してクエリを実行すると、2100 人以上がいると失敗します (SQL ではそれほど多くのパラメーターが許可されません)。
また、あまりにも多くのデータを取得する必要があるため、Orders コレクションを person に追加することはできません (日付範囲のみが必要です)。
NHibernate でこれを行うにはどうすればよいですか?