HQL 1到很多count()问题

时间:2009-08-27 20:10:17

标签: hibernate hql

我正在尝试用HQL编写查询,而我遇到了一些问题。这可能不是太难,但我对查询语言和特定的HQL非常糟糕。

基本上,有三个表,Owners,Pets和Toys,其类如下:

public class Owner {
 long ownerId;
 List<Pet> pets;
}
public class Pet {
 Owner myOwner;
 List<Toy> toys;
}
public class Toy {
  Pet petThatOwnsThisToy;
  boolean isSqueaky;
}

我正在寻找一个HQL查询,给定一个所有者,返回他们的宠物至少有3个吱吱作响的玩具的数量。我确定必须有一个非常简单的HQL解决方法,但如果我知道它是什么,请搜索我。

我也很乐意发现除文档之外的任何有用的HQL教程(非常好,假设一个已经是SQL专业人员,我不是)。

2 个答案:

答案 0 :(得分:1)

怎么样?

select count(pet)
from Pet pet 
join pet.myOwner owner
where owner.id = :ownerId
and pet.id in (
   select pet.id 
   from Toys toy
   join toy.petThatOwnsThisToy pet
   group by pet.id
   having count(pet.id) >= 3
)

我必须承认我没有尝试过,我很快就做好了。

答案 1 :(得分:1)

更面向对象的方式(虽然不确定性能):

select count(pet)
from Pet pet 
where pet.owner.id = :ownerId
and size(pet.toys) >= 3