用于大小检索的JPA Hibernate Fetch Collection

时间:2012-01-05 15:08:15

标签: java performance hibernate jpa

是否有可能获取实体的集合只是为了检索它的大小?

类似的东西:

FROM Cat c JOIN SIZE c.kittens

所以我可以使用如下查询的结果:

int sum = 0;

for(Cat c : em.createQuery("..", Cat.class).getResultList())
  sum += c.getKittens().size();

是否有任何关键字或其他可能只获得大小。

为此目的获取整个集合并不是一个大问题,但我只是考虑性能改进并问自己如何做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以在JPQL中使用SQL聚合函数 对于单猫

select count(*) from Kittens k where k.cat = :cat

对于每一只猫(小猫表中的所有行)

select count(*) from Kittens k

并将其检索为

Long size = (Long) query.getSingleResult();