繁体   English   中英

如何使用 JPA 标准 API 检索不同行的数量

[英]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);

更多信息: https://www.objectdb.com/java/jpa/query/criteria

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM