Hibernate本地查询,计数

7

可能是重复问题:
如何使用Hibernate计算行数?

我想要按照条件在数据库中计算记录的数量。
我尝试使用以下查询语句:

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

但是没有方法可以执行这个查询并得到结果。
我知道,可以使用以下方法来计算记录数:
String queryString = "SELECT * FROM my_table";  
Query query = entityManager.createNativeQuery(queryString); 
query.getResultList().size();  

所以问题是,使用Count(*)的查询是否更具性能优势?如果是,那么我如何执行带有Count(*)的查询?

2个回答

10

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

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

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


2

你是否尝试调用query.getSingleResult()方法?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接