Я реализую функциональность типа «Расширенный поиск» для сущности в моей системе, так что пользователь может искать эту сущность, используя несколько условий (например, ne, gt, lt и т. Д.) Для атрибутов этой сущности.Я использую API критериев JPA для динамического создания запроса Criteria, а затем использую setFirstResult()
& setMaxResults()
для поддержки нумерации страниц.До этого момента все было в порядке, но теперь я хочу показать общее количество результатов в таблице результатов, но я не вижу прямого способа получить общее количество запросов Criteria.
Вот так выглядит мой код:
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Brand> cQuery = builder.createQuery(Brand.class);
Root<Brand> from = cQuery.from(Brand.class);
CriteriaQuery<Brand> select = cQuery.select(from);
.
.
//Created many predicates and added to **Predicate[] pArray**
.
.
select.where(pArray);
// Added orderBy clause
TypedQuery typedQuery = em.createQuery(select);
typedQuery.setFirstResult(startIndex);
typedQuery.setMaxResults(pageSize);
List resultList = typedQuery.getResultList();
Мой набор результатов может быть большим, поэтому я не хочу загружать свои сущности для запроса на подсчет, поэтому скажите мне эффективный способ получить общее количество, например, метод rowCount()
для критерия (я думаю, что он есть в Критериях Hibernate).