在我的模型中,我有两个实体:Person 和 Puppy(为了简化它:))。它们之间存在一对多关系,因此每个人都有一组小狗。
现在想编写 HQL 查询,它将列出所有名为“John”的人,但也将小狗限制为 2 个月以上的人。
我的第一次尝试是这样的:
SELECT p FROM Person p
JOIN FETCH p.puppies pu
WHERE p.name = 'John'
AND pu.age > 2
但它不起作用,因为这个查询只选择那些至少有一只超过两个月的小狗的人,而不是那些只有更年轻的人。我也想看到他们只是用空的小狗名单。
实际上,我想实现类似(伪代码):
SELECT p FROM Person p
JOIN FETCH p.puppies pu HAVING (pu.age > 2 )
WHERE p.name = 'John'