私のモデルには、PersonとPuppyの2つのエンティティがあります(単純化するために:))。それらの間には1対多の関係があるので、各人は子犬のコレクションを持っています。
ここで、「John」という名前のすべての人をリストするだけでなく、子犬を2か月以上の人に制限するHQLクエリを作成します。
私の最初の試みは次のようになりました:
SELECT p FROM Person p
JOIN FETCH p.puppies pu
WHERE p.name = 'John'
AND pu.age > 2
ただし、このクエリでは、2か月以上前の子犬が少なくとも1匹いる人だけが選択され、若い子犬しかいない人は選択されないため、機能しません。そして、空の子犬リストだけでそれらを見たいです。
事実上、私は(擬似コード)のようなものを達成したいと思います:
SELECT p FROM Person p
JOIN FETCH p.puppies pu HAVING (pu.age > 2 )
WHERE p.name = 'John'