Я реализую функцию "Расширенный поиск" для Entity в моей системе, так что пользователь может искать этот объект, используя несколько условий (eq, ne, gt, lt, и т.д.) для атрибутов этого объекта. Я использую API критериев JPA для динамического генерации запроса Criteria, а затем с помощью setFirstResult()
и setMaxResults()
для поддержки разбивки на страницы. Все было хорошо до этого момента, но теперь я хочу показать общее количество результатов по сетке результатов, но я не видел прямого способа получить общий счет запроса критериев.
Вот как выглядит мой код:
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();
Мой результирующий набор может быть большим, поэтому я не хочу загружать свои объекты для запроса count, поэтому скажите мне эффективный способ получить общий счет, например, метод rowCount()
по критериям (я думаю, что он существует в Hibernate Criteria).