Как мы можем вычислить последнюю страницу с помощью JPA? - PullRequest
5 голосов
/ 16 июня 2010

Я хотел бы реализовать разбиение на страницы в моем проекте Servlet / EJB / JPA-Hibernate, но я не могу понять, как только одна страница из запроса и знать количество страниц, которые я должен отобразить

Iиспользуйте

setFirstResult(int first) ;
setMaxResults(int max) ;

, и это работает нормально, но как узнать, сколько всего страниц у меня будет?

(Hibernate - мой JPA-провайдер, но я бы предпочел использовать только JPA, есливозможно)

ОБНОВЛЕНИЕ: COUNT () кажется лучшим / самым простым решением;но сколько может стоить SELECT COUNT(*) FROM ... по сравнению с executeQuery("SELECT * FROM ...).getListResult().size()?

1 Ответ

4 голосов
/ 16 июня 2010

AFAIK, вам нужно (1) считать или (2) получить полный список попаданий и выполнить нумерацию страниц в памяти. Количество страниц - это общее количество / размер страницы.

Существует несколько способов подсчета, один из них - использовать COUNT(*), как в

Query query=em.createQuery("SELECT COUNT
(emp.empName) FROM Employee emp");

или другой должен использовать проекцию

criteria.setProjection(Projections.rowCount());
int rowCount = (Integer) criteria.list().get(0);

Обратите внимание, что я этим никогда не пользовался, я просто где-то читал.

В этом ответе я задокументировал несколько других деталей о разбиении на страницы:

Надеюсь, это поможет

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