私は問題があります。私には人と猫がいます。各Personにはいくつかの猫がいます(Catsには、Personsの主キーを指す外部キーがあります)。それぞれの猫には年齢があります。「古い」猫を飼っている人を選びたいです。「古い」猫だけでなく、これらの人のすべての猫が欲しいです。QueryOver構文でそれを行う必要があります。
T-SQLでは、次のようになります。
SELECT P.*, C.*
FROM Persons P
LEFT JOIN Cats C
ON P.Id = C.OwnerId
WHERE EXISTS (
SELECT 1
FROM Cats C2
WHERE P.Id = C2.OwnerId AND C2.Age > 5)
サブクエリを使用する必要があることはわかっています。「古い」nhibernate構文(Criteria / DetachedCriteria)を使用すると簡単に使用できますが、QueryOver構文では使用できません。
「IN」状態は必要ありません。私の主キーは複雑なキーなので、INでは実行できません。
var persons = session.QueryOver<Person>.WithSubquery.WhereExists( ??? );