ユーザーがこのエンティティの属性に対して複数の条件 (eq、ne、gt、lt、like など) を使用してそのエンティティを検索できるように、システム内のエンティティに「高度な検索」の種類の機能を実装しています。JPA の Criteria API を使用して 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();
私の結果セットは大きくなる可能性があるので、カウントクエリのためにエンティティをロードしたくないので、Criteria のメソッドのような合計カウントを取得する効率的な方法を教えてくださいrowCount()
(Hibernate の Criteria にあると思います)。