【发布时间】:2021-04-03 22:12:22
【问题描述】:
我有一个包含一些谓词的查询,我需要计算分页的总记录数。
目前,我正在做的是为查询声明 2 个根以获取结果列表 (1) 和计数查询 (2),然后使用每个谓词,像这样用不同的根复制它
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<A> cq = cb.createQuery(A.class);
Root<A> root = cq.from(A.class);
CriteriaQuery<Long> cq = cb.createQuery(A.class);
Root<A> rootCount = countQuery.from(A.class);
List<Predicate> predicates = new ArrayList<>();
List<Predicate> predicatesCount = new ArrayList<>();
Predicate p = cb.equal(root.get(A.ID), 1);
predicates.add(p);
Predicate p1 = cb.equal(rootCount.get(A.ID), 1);
predicatesCount.add(p1);
...
// execute both query to get result
所以问题是:
是否可以从查询(1)创建计数查询?或者通过计数查询重用谓词?
感谢阅读!
【问题讨论】:
标签: java hibernate jpa criteriaquery