@DDwrt100

Как получить количество ответов после выполнения запроса?

Добрый день.
Имеется такой запрос с пагинацией.
List<Pages> datarecord1 = Dao.getSession()
                    .createQuery("FROM Page as d  WHERE d.dateTimeCreated BETWEEN  :startTimeDate AND :endTimeDate ORDER By d.dateTimeCreated", Pages.class)
                    .setParameter("startTimeDate", startTimeDate)
                    .setParameter("endTimeDate", endTimeDate)
                    .setFirstResult(startResult)
                    .setMaxResults(onPage)
                    .stream()
                    .map(restConverterService::Pages)
                    .collect(Collectors.toList());

Код отдает определенное количество записей, после конвертирует в класс ответа. Однако есть необходимость так же отдавать число, которое показывает общее количество ответов, полученное если бы не было пагинации.
Кто может подсказать как это реализовать ?
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Получать отдельным запросом
long totalPages = (Long) Dao.getSession()
     .createQuery("select count(*) from Page")
     .uniqueResult();

Но так как count относительно тяжёлая функция, результат лучше кэшировать, а при изменении количества строк кэш сбрасывать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы