一尘不染

休眠本机查询,计数

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(*)呢?


阅读 215

收藏
2020-06-20

共1个答案

一尘不染

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

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

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

2020-06-20