我有一个任意的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
实例。
答案 0 :(得分:0)
不可能将CriteriaQuery用作子查询。
一种计算行数的方法是使用getResultList()
方法。
return criteriaBuilder.createQuery(criteriaQuery).getResultList().size()
在我看来,这不是最佳解决方案,但是当您期望结果列表较小时,它可以工作。否则,您需要按照here中的说明重写现有的CriteriaQuery。