我想按数据库中的条件计数记录数。 我尝试使用下一个查询
String queryString = "SELECT Count(*) FROM my_table"; Query query = entityManager.createNativeQuery(queryString);
但是没有方法可以执行此操作Query query并获得结果。 我知道,我可以使用
Query query
String queryString = "SELECT * FROM my_table"; Query query = entityManager.createNativeQuery(queryString); query.getResultList().size();
所以问题是,查询是否具有Count(*)更高的性能?如果yes,那么如何执行查询Count(*)呢?
Count(*)
yes
您可以通过调用来执行第一个查询Query.getSingleResult(),例如。
Query.getSingleResult()
String queryString = "SELECT Count(*) FROM my_table"; Query query = entityManager.createNativeQuery(queryString); System.out.println(query.getSingleResult());
如果要将计数分配给变量,则需要将其转换为适当的类型(它可以取决于DB,但很可能是Long)。第二个查询效率很低,因为Hibernate需要从数据库中检索整个表,对其进行分析,然后对所有行进行计数。