Как мы можем вычислить страницу LAST с JPA?

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

Я использую

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

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

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

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

5
задан Kevin 16 June 2010 в 18:49
поделиться

1 ответ

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);

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

В этом ответе я описал еще несколько деталей о пагинации:

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

4
ответ дан 15 December 2019 в 00:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: