当前位置: 首页 > 知识库问答 >
问题:

如何使用JPA Criteria API检索不同的行数

沃弘图
2023-03-14

我需要计算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])));

通常将其转换为子查询的方法行不通,因为您不能在子查询上进行多选,也不能从子查询中进行选择。

这可以用Criteria API完成吗?

共有1个答案

席俊驰
2023-03-14

你能试试这个吗?

CriteriaBuilder builder=em.getCriteriaBuilder();CriteriaQuery查询=生成器。createQuery(String.class);

Root ruleVariableRoot=查询。from(规则变量类);查询选择(ruleVariableRoot.get(RuleVar\uu.varType))。清晰(真);

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

 类似资料:
  • 类似Bigtable的数据库存储按其键排序的行。 Cassandra使用分区和聚类键的结合来保持数据的分布和排序;但是,您只能通过使用分区键来选择行! 用于上述查询的Cassandra存储层的可视化。

  • 嗨,如何检查聚合查询中使用的索引和扫描对象的数量,类似于db.collection.find().explain()?

  • 我正在尝试用mysql编写一个查询,其中我的表结构如下所示 这里我有美国的id,它是1,使用这个id我想检索美国的所有州和每个州的城市。这里, 如果state_id和city_id为0,则为国家 如果city_id为0,则为状态 如果state_id为0,则为城市 位置id为auto_increment 请有人帮帮我,谢谢。

  • 问题内容: 我想在gradle中定义一个任务(称为),该任务运行gradle任务,但具有的固定值。我也希望以后可以使用原始任务。 我的问题是,我无法转移清单的设置。 我累了 我以为我要通过对archiveName和manifest使用其他值来重新定义任务。 运行时会生成一个可执行的JAR文件。 运行时会生成一个jar文件。不幸的是,当尝试使用我运行程序时,出现错误消息: java -jar bui

  • 问题内容: 我有: 我得枚举名称(,,只能使用IDS(40,60,80))。我该怎么做? 问题答案: 在您要搜索的静态方法中创建一个静态方法(隐式方法/成员,不知道确切是哪个方法)并返回相应的值。对于该方法找不到匹配值的情况,应创建一个特殊的条目,例如,可以返回。这样,您不必返回,这总是一个坏主意。 顺便说一句-您的代码似乎是错误的。之后的括号似乎不属于那里。

  • 问题内容: 我是XML的新手。我想根据请求名称阅读以下XML。请帮助我了解如何以Java读取以下XML 问题答案: 如果你的XML是字符串,则可以执行以下操作: 如果你的XML在文件中,Document document则将被实例化为: 在document.getDocumentElement()返回你是文档的文档元素节点(你的情况 )。 一旦有了rootElement,就可以访问元素的属性(通过