「 ExampleEntity」のカウントを取得するために、次のコードを書きました。
cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
root = cq.from(ExampleEntity);
cq.select(cb.count(root));
return entityManager.createQuery(cq).getSingleResult();
生成された SQL: Hibernate: select count( exampleen0_.id ) as col_0_0_ from EXAMPLEENTITY exampleen0_
ただし、パフォーマンス上の理由から (Oracle 11g データベースを使用)、次の SQL を生成する必要があります。
目的のSQL:サンプルのexampleen0_からcol_0_0_としてcount(*)を選択します
JPQL クエリを作成するのは非常に簡単ですが、フィルター用に既存の多くのコードを書き直す必要があります。
CriteriaQuery を使用して "count(exampleen0_.id)" の代わりに "count(*)" を生成するにはどうすればよいですか?