JPA Hibernate Fetch Collection для получения размера - PullRequest
1 голос
/ 05 января 2012

Есть ли возможность получить коллекцию сущности только для получения ее размера?

Что-то вроде:

FROM Cat c JOIN SIZE c.kittens

Так что я могу использовать результатзапрос вроде:

int sum = 0;

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

Есть ли какое-либо ключевое слово или другая возможность получить только размер.

Не является большой проблемой получить всю коллекцию для этой цели, но я просто подумалулучшения производительности и спросил себя, как это можно сделать?

1 Ответ

2 голосов
/ 05 января 2012

Вы можете использовать агрегатные функции SQL в JPQL для одного Cat

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

Для каждого Cat одновременно (все строки в таблице Kittens)

select count(*) from Kittens k

и получить его как

Long size = (Long) query.getSingleResult();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...