hibernate本机查询,计数

时间:2012-10-24 12:22:44

标签: java sql hibernate count

  

可能重复:
  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(*)执行查询?

2 个答案:

答案 0 :(得分:8)

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

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

如果要将计数分配给变量,则需要将其转换为正确的类型(它可能取决于DB,但很可能是长的)。 第二个查询非常低效,因为Hibernate需要从DB检索整个表,分析它然后计算所有行。

答案 1 :(得分:0)

您是否尝试过调用query.getSingleResult()?