Java 休眠本机查询,计数

Java 休眠本机查询,计数,java,sql,hibernate,count,Java,Sql,Hibernate,Count,可能重复: 我想按数据库中的条件计算记录数。 我尝试使用下一个查询 String queryString = "SELECT Count(*) FROM my_table"; Query query = entityManager.createNativeQuery(queryString); 但是没有方法执行此查询并获得结果。 我知道,我可以使用 String queryString = "SELECT * FROM my_table"; Query query = entit

可能重复:

我想按数据库中的条件计算记录数。
我尝试使用下一个查询

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(*)
的查询是否性能更高,如果
yes
,那么如何使用
Count(*)
执行查询?

您尝试调用query.getSingleResult()了吗

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

String queryString = "SELECT Count(*) FROM my_table";  
Query query = entityManager.createNativeQuery(queryString); 
System.out.println(query.getSingleResult());
如果要将计数分配给变量,则需要将其转换为适当的类型(它可能取决于DB,但很可能很长)。 第二个查询效率非常低,因为Hibernate需要从数据库中检索整个表,分析它,然后计算所有行