JPA Criteria api - Общее количество записей для конкретного запроса в разбивке на страницы

Я программирую функцию для разбивки на страницы в моем уровне репозитория. Функция получает в качестве параметров страничный объект Spring и некоторое значение, подобное этому:

public Page<Foo> filterFoo(Pageable pageable, String value) {
   CriteriaBuilder cb = entityManager.getCriteriaBuilder();
   CriteriaQuery<Foo> fooQuery = cb.createQuery(Foo.class);
   Root<Foo> foo = fooQuery .from(Foo.class);
   fooQuery .where(adding predicate for match value);

   List<Foo> result = entityManager.createQuery(fooQuery )
      .setFirstResult((pageable.getPageNumber() - 1) * pageable.getPageSize())
      .setMaxResults(pageable.getPageSize())
      .getResultList();
   return new PageImpl<>(result, pageable, xxxx);
}

Функция возвращает объект PageImpl пружины, заполненный моим результатом. В PageImpl мне также нужно установить общее количество объектов, соответствующих предикатам. Это число, конечно, должно быть без maxResult и firstResult. Можно ли создать еще один вызов базы данных с моим fooQuery, чтобы получить неограниченное количество записей базы данных для этого запроса? Как лучше всего использовать api страниц и критериев в JPA? Спасибо за совет.

Привет, Вам удалось найти обходной путь для этого?

Chrispie 24.04.2019 08:35
1
1
133
0

Другие вопросы по теме