【问题标题】:How do I retrieve the number of distinct rows with the JPA Criteria API如何使用 JPA Criteria API 检索不同行的数量
【发布时间】:2021-02-09 14:45:38
【问题描述】:

我需要计算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 的常用方法将不起作用,因为您无法在Subquery 上使用multiselect,也无法从Subquery 中进行选择。

这可以通过 Criteria API 完成吗?

【问题讨论】:

    标签: java jpa criteria-api


    【解决方案1】:

    你可以试试这个吗?

    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

    【讨论】:

    • 感谢您抽出宝贵时间对此问题发表评论;遗憾的是,这并不能解决问题,因为我需要选择多个条目并获得相应的计数,但我不知道这是如何做到的。
    猜你喜欢
    • 1970-01-01
    • 2017-02-21
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 2016-01-14
    相关资源
    最近更新 更多