Это классический вопрос.Краткий ответ - нет, так как вам нужно определить количество записей, тогда вам нужно извлечь только те записи, которые вы хотите для страницы.Я делал это раньше, используя тот же запрос Criteria
, но выполняя следующие действия:
- Настройка полного запроса
Criteria
, за исключением сортировки, ограничения и смещения - Добавьте
Projections.rowCount()
к запросу и выполните запрос, используя uniqueResult()
- Установите
Projections
на null
- Добавьте сортировку (
addOrder
), предел (setMaxResults
) и смещение (setFirstResult
) - Запустите запрос еще раз, на этот раз с помощью
list
для получения набора результатов
Обратите внимание, что даже при работе внутри хранимого процесса вОракул, я видел опытных администраторов баз данных, делающих одно и то же.