如何构建JPA查询以计算任意CriteriaQuery的结果数?

时间:2019-03-16 22:05:03

标签: java jpa

我有一个任意的JPA标准查询。我想知道在不从数据库中转移所有结果的情况下,查询将产生多少结果。

所以基本上我想创建一个查询

select count(*) from (<the arbitrary criteria query>)

问题是实现这种方法时,我不知道如何从原始SubQuery创建CriteriaQuery

CriteriaQuery<Integer> countQuery = criteriaBuilder.createQuery(Integer.class);
criteriaBuilder.count(criteriaQuery);

或者我错过了另一种实现方法。

如何使用JPA做到这一点?

修改:
这不是How do I count the number of rows returned by subquery?的副本,因为我已经有了一个CriteriaQuery实例,我想将其合并到新查询或修改中。另一个问题是关于从头开始构建查询。这个问题的重点是如何使用我手头已有的CriteriaQuery实例。

1 个答案:

答案 0 :(得分:0)

不可能将CriteriaQuery用作子查询。

一种计算行数的方法是使用getResultList()方法。

return criteriaBuilder.createQuery(criteriaQuery).getResultList().size()

在我看来,这不是最佳解决方案,但是当您期望结果列表较小时,它可以工作。否则,您需要按照here中的说明重写现有的CriteriaQuery。