[英]How do I retrieve the number of distinct rows with the JPA Criteria API
我需要计算CriteriaQuery
返回的行数。 这里的相关信息是那些需要是基于动态选择的列集的不同行。
这意味着,我不能计算整个表,因为这可能会考虑结果,如果您去除一定数量的列,那将是多余的。
我有一个要符合的谓词和选择列表:
private final List<Selection<?>> projection = new ArrayList<>();
private final List<Predicate> predicates = new ArrayList<>();
如果这个查询是非分页执行的,我想计算将返回的行数:
criteriaQuery.multiselect(projection)
.distinct(true)
.where(cb.and(predicates.toArray(new Predicate[0])));
将其转换为Subquery
的常用方法将不起作用,因为您不能在multiselect
上进行多选,也不能从Subquery
中选择Subquery
。
这可以通过标准 API 来完成吗?
你能试试这个吗?
CriteriaBuilder builder = em.getCriteriaBuilder(); CriteriaQuery 查询 = builder.createQuery(String.class);
根 ruleVariableRoot = query.from(RuleVar.class); query.select(ruleVariableRoot.get(RuleVar_.varType)).distinct(true);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.