Как создать запрос JPA для подсчета количества результатов произвольного запроса CriteriaQuery? - PullRequest
0 голосов
/ 17 марта 2019

У меня произвольный запрос по критериям JPA.Я хотел бы знать, сколько результатов даст этот запрос без передачи всех результатов из базы данных.

Так что в основном я хотел бы создать запрос

select count(*) from (<the arbitrary criteria query>)

Проблема в том, что либоЯ не знаю, как создать SubQuery из исходного CriteriaQuery при реализации, например:

CriteriaQuery<Integer> countQuery = criteriaBuilder.createQuery(Integer.class);
criteriaBuilder.count(criteriaQuery);

Или мне не хватает другого способа его реализации.

Какя могу сделать это, используя JPA?

Редактировать:
Это не дубликат Как мне подсчитать количество строк, возвращаемых подзапросом? , потому чтоУ меня уже есть экземпляр CriteriaQuery, который я хотел бы включить в новый запрос или изменить.Другой вопрос касается создания запроса с нуля.Суть этого вопроса в том, как использовать экземпляр CriteriaQuery, который у меня уже есть.

1 Ответ

0 голосов
/ 18 марта 2019

Невозможно использовать CriteriaQuery в качестве подзапроса.

Один из способов подсчитать количество строк - использовать метод getResultList().

return criteriaBuilder.createQuery(criteriaQuery).getResultList().size()

По моему мнениюЭто не оптимальное решение, но работает, когда вы ожидаете небольшой список результатов.В противном случае вам нужно переписать существующий запрос CriteriaQuery, как описано здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...