当前位置: 首页 > 面试题库 >

在JPA 2中,使用CriteriaQuery,如何计算结果

史默
2023-03-14
问题内容

我对JPA 2相当陌生,它是CriteriaBuilder / CriteriaQuery API:

CriteriaQuery
Java文档

CriteriaQuery 在Java EE
6教程中

我想计算一个CriteriaQuery的结果而不实际检索它们。那有可能吗,我没有找到任何这样的方法,唯一的办法就是这样做:

CriteriaBuilder cb = entityManager.getCriteriaBuilder();

CriteriaQuery<MyEntity> cq = cb
        .createQuery(MyEntityclass);

// initialize predicates here

return entityManager.createQuery(cq).getResultList().size();

那不可能是正确的方法…

有解决方案吗?


问题答案:

类型查询MyEntity将返回MyEntity。您要查询Long

CriteriaBuilder qb = entityManager.getCriteriaBuilder();
CriteriaQuery<Long> cq = qb.createQuery(Long.class);
cq.select(qb.count(cq.from(MyEntity.class)));
cq.where(/*your stuff*/);
return entityManager.createQuery(cq).getSingleResult();

显然,您将希望使用示例中跳过的任何限制和分组等来构建表达式。



 类似资料:
  • 我对JPA相当陌生,它是CriteriaBuilder/CriteriaQuery API: 我想查询一组对象的摘录(如下所示,我只选择结果中的元素n到m) 查询本身运行良好,我得到了预期的结果。 但是如果我尝试计算所有可能的结果,我会得到一个java。lang.IllegalArgumentException: org.hibernate.hql.internal.ast.无效路径:'生成lia

  • 问题内容: 我试图从数据库中选择两个字段之间的时差小于或大于某个值的实体。在标准SQL中,只需使用TIMESTAMPDIFF函数即可完成此操作: 但是,JPA 2.0中似乎没有任何等效的东西。 我已经尝试了所有我能想到的一切,包括这里的建议:将TIMESTAMPDIFF与JPA条件查询一起使用,并将休眠作为提供者 根本不起作用,因为我专门尝试计算长时间(60/90天)。TIMEDIFF解决方案无济

  • 我正在使用spring-data-elasticsearch。我已经使用带有许多子标准的标准构建了大多数查询条件。现在我想为嵌套字段包含一个简单的查询条件。但是使用uery_stringAPI来标准corms查询,这不适用于嵌套字段。我期待嵌套查询。 如何在没有NativeSearchQuery的情况下使用条件来支持这一点? 嵌套映射 我想查询“ae.su.keyword”字段。构建标准使用此字段

  • 我创建这段代码是为了创建随机数和运算符,但它如何计算并显示结果呢? 它现在做的是,例如打印出来:4+1-3或9*2-8等。我不知道如何计算出4+1-3或9*2-8的结果,然后打印出来。

  • 问题内容: 计算varchar中varchar出现的最佳方法是什么。 我宁愿不遍历文本来查找某些组合。 此选择仅找到第一个 返回1 我需要一种方法来找到匹配的总数 预期结果 使用MSSQL Server 2005 问题答案: 您可以使每次出现的时间延长1个字符,并计算增加的​​字符数: SE Data的完整示例。

  • 问题内容: 给定以下结构,我想执行以下SQL的HQL或CriteriaQuery等效项: 我想找回与给定人员关联的位置列表,其creationDate在给定位置之后。 提前致谢! 标记 编辑***:我已经编辑了SQL,因为这有点误导。我不想独立查询位置。 问题答案: 这是不可能的,您无法查询。从JPA Wikibook: 嵌入式收藏 的映射可以被用来定义的集合 的对象。这不是对象的典型用法,因为对