У меня есть запрос, сгенерированный с помощью API критериев гибернации, выполнение которого занимает довольно много времени:
select count (entity.id)
from table
where field1 in ('...') and field2 in ('...') and ...
Я заменил entity.id на '*':
select count (*)
from table
where field1 in ('...') and field2 in ('...') and ...
И на данный момент он работает довольно хорошо по некоторым причинам, но я не могу сгенерировать этот запрос по критериям api. Я создаю Root следующим образом:
Root<MyEntity> root cq.from(MyEntity.class);
Есть ли способы сгенерировать SQL-запрос с помощью select count (*), а не с count (id)?
Используйте count(1)
, что эквивалентно выполнению criteriaBuilder.count(criteriaBuilder.literal(1))
привет, у меня была эта проблема какое-то время, критерии Builder.literal (1) не работают в старом спящем режиме, сумма (1) работает как count (*), я тестирую критерии Builder.sum (criteriaBuilder.literal (1)) и моя проблема решена
Отвечает ли это на ваш вопрос? JPA 2.0: учитывать произвольный CriteriaQuery?