6

可能重复:
我们如何使用 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(*)

4

2 回答 2

9

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

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

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

于 2012-10-24T12:30:12.917 回答
0

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

于 2012-10-24T12:26:32.177 回答