1. ホーム
  2. java

[解決済み] JPA 2でCriteriaQueryを使用した結果のカウント方法

2022-07-01 03:40:51

質問

私はJPA 2とそのCriteriaBuilder / CriteriaQuery APIに慣れていないのですが、どのようにすればいいですか?

CriteriaQuery ジャバドック

CriteriaQuery Java EE 6 チュートリアルの

私は実際にそれらを取得せずにCriteriaQueryの結果をカウントしたいと思います。それは可能ですか、私はそのようなメソッドを見つけられませんでした、唯一の方法はこれを行うことでしょう。

CriteriaBuilder cb = entityManager.getCriteriaBuilder();

CriteriaQuery<MyEntity> cq = cb
        .createQuery(MyEntityclass);

// initialize predicates here

return entityManager.createQuery(cq).getResultList().size();

というのが正しい方法であるはずもなく...。

解決策はあるのでしょうか?

どのように解決するのですか?

タイプのクエリ MyEntity が返すのは MyEntity . に対するクエリが必要です。 Long .

CriteriaBuilder qb = entityManager.getCriteriaBuilder();
CriteriaQuery<Long> cq = qb.createQuery(Long.class);
cq.select(qb.count(cq.from(MyEntity.class)));
cq.where(/*your stuff*/);
return entityManager.createQuery(cq).getSingleResult();

明らかに、例でスキップした制限やグループ化などを使って式を構築したいでしょう。