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

hibernate native 查询,计数

夏侯弘光
2023-03-14
问题内容

我想按数据库中的条件计数记录数。
我尝试使用下一个查询

String queryString = "SELECT Count(*) FROM my_table";  
Query query = entityManager.createNativeQuery(queryString);

但是没有方法可以执行此操作Query query并获得结果。
我知道,我可以使用

String queryString = "SELECT * FROM my_table";  
Query query = entityManager.createNativeQuery(queryString); 
query.getResultList().size();

所以问题是,查询是否具有Count(*)更高的性能?如果yes,那么我该如何执行查询Count(*)呢?


问题答案:

您可以通过调用来执行第一个查询Query.getSingleResult(),例如。

String queryString = "SELECT Count(*) FROM my_table";  
Query query = entityManager.createNativeQuery(queryString); 
System.out.println(query.getSingleResult());

如果要将计数分配给变量,则需要将其转换为适当的类型(它可以取决于DB,但很可能是Long)。第二个查询效率很低,因为Hibernate需要从数据库中检索整个表,对其进行分析,然后对所有行进行计数。



 类似资料:
  • 在使用Micronaut数据执行显式查询(@query)时,是否可以给出一个countQuery示例来实现分页?在中没有示例https://micronaut-projects.github.io/micronaut-data/latest/guide/#explicitQueries 我必须提出一个如下的问题

  • 账单查询接口 日期: 2020-05-27 创盛视联数码科技(北京)有限公司 1.查询账单 描述 查询账单 备注 本接口需要thqs加密请求 thqs参考 https://doc.bokecc.com/live/Appendix_2.html 地址: https://ccapi.csslcloud.net/api/charge/usage 备注: 需要THQS加密请求 方法: POST/GE

  • 问题内容: 在SQL中按月将一列中的1-12连接到一堆计数的好方法是什么?…在​​SQL中 最终会像 编辑-基本上是一种获取我的月份列表/表格/任何内容的巧妙方法 问题答案: 许多方法…在上一份工作中对许多应用程序来说对我来说效果很好的一种方法是建立时间表。 然后,您可以将其日期字段放在startstamp和endstamp之间的timeframes表中进行联接。 这样可以很容易地拉出某个时间段或

  • 问题内容: 我有一张表,上面有像 我想做一张像这样的桌子 等等。 问题答案: WITH basedata(id,keywords) AS ( SELECT 1,’cat, dog, man, mouse’ union all SELECT 2 ,’man, pen, pencil, eraser’ union all SELECT 3,’dog, man, friends’ union all S

  • 我有3张桌子 许可证中的CREATED_AT是一个日期(非空)字段。 表根据同名主键/外键进行关联;客户可以拥有0个或多个许可证,每个许可证都有一个版本。 我想从这些表格中得到: 客户的名字、姓氏和创建的最后一个许可证的release\u id(根据许可证中的created\u AT字段查找最后一个),如果有。 对于这个问题,我使用了以下查询: 这似乎有效,但我问是否有人可以证实我这一点,或者是否

  • 所有的查询条件不区分调用顺序,但必须在调用Get,Exist, Sum, Find,Count, Iterate, Rows这几个函数之前调用。同时需要注意的一点是,在调用的参数中,如果采用默认的SnakeMapper所有的字符字段名均为映射后的数据库的字段名,而不是field的名字。