java - hibernate native 查询,计数

标签 java sql hibernate count

这个问题在这里已经有了答案:




8年前关闭。




Possible Duplicate:
How do we count rows using Hibernate?



我想按数据库中的条件计算记录数。
我尝试使用下一个查询
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 需要从 DB 中检索整个表,对其进行分析,然后对所有行进行计数。

关于java - hibernate native 查询,计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13049137/

相关文章:

java - Spring Boot Data JPA 无法在 MockMVC 测试中 Autowiring 存储库接口(interface)

sql - 存储未知数量属性的更好方法

java - Hibernate JPA OneToOne 与外键的关系

java - 序列化 JTextPane 的文档是否会序列化 JTextPane 的监听器?

java - 模块 "Package is declared ' 中的错误 : 'foo.bar' javafx. beans.value'

java - 加载 JavaFX Applet 时启用调试日志

sql - 如何将参数列表传递给存储过程并在 SQL Server 中执行批量插入

mysql选择像facebook提要中的记录

java - QueryDSL查询异常

java - 当我尝试运行 @Query 时,为什么 JPA/Hibernate 抛出 "java.lang.NegativeArraySizeException: -1"?