当前位置: 首页 > 面试题库 >

休眠本机查询,计数

欧阳玺
2023-03-14
问题内容

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

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


问题答案:

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

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

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



 类似资料:
  • 问题内容: 我在使用Hibernate创建子查询时遇到问题。不幸的是Subqueries类几乎完全没有文档,因此我完全不知道如何将以下SQL转换为Hibernate Criteria: 我希望以下内容能够“正常工作”: 但不幸的是,事实并非如此。因此,看来我实际上必须使用Subqueries类来创建Criteria。但是我无法通过Google找到一个合理的例子,因此这使我在这里提出了疑问。 问题答

  • 问题内容: 当我尝试从数据库中删除条目时,使用 然后我可以执行以下操作: 1)如果该行存在于数据库中,则将执行两个SQL查询:一个选择,然后一个删除 2)如果数据库中不存在该行,则仅执行选择查询 但是同样,更新不是这种情况。无论是否存在数据库行,都只会执行更新查询。 请让我知道为什么这种行为用于删除操作。这不是性能问题,因为遇到了两个查询而不是一个查询? 编辑: 我正在使用休眠3.2.5 样例代码

  • 问题内容: 尝试使用本机SQL更新数据时出现此错误。这是我的脚本: 是包含多个这样的字符串: 当我更新(使用)时,会引发以下错误: 请求处理失败;嵌套的异常是org.hibernate.exception.DataException:无法执行本机批量操作查询],根本原因是com.mysql.jdbc.MysqlDataTruncation:数据截断:截断了错误的DOUBLE值:‘222,226,2

  • 问题内容: 我需要使用detachedCriteria进行此SQL查询: 这个想法是从不属于用户的游戏中获取ID。我尝试了与detachedCriteria类似的10种不同方法,但得到了“未知实体:null” MappingException代码应类似于: 还设置投影以仅返回游戏的ID。 有任何想法吗?我认为Hibernate在加入没有别名的查询时会遇到一些麻烦。添加别名是可行的,但结果是完全错误

  • 问题内容: 在JPA(以及JBoss 5中包含的其余Hibernate软件包)中使用Hibernate 3.3.2GA时出现奇怪的性能问题。 我正在使用本机查询,并将SQL组装为准备好的语句。 SQL有很多联接,但是实际上非常基本,只有一个参数。喜欢: 该查询将在一秒钟内在MSSQL Studio上运行。 如果我加 查询将暂停9秒 但是,如果我只替换“?” 值(使其不是Prepared State

  • 问题内容: 我正在将JPA持久性提供程序从EclipseLink 2.3切换到Hibernate 3.6.5.Final。问题出在本机查询上。注意:这不是EclipseLink的问题。我试图从我没有为其声明实体的表中获取一个标量值。这是代码: 使用Hibernate会得到一个,因为返回的对象实际上是一个代理对象。我不知道它是什么类型,但是我知道它不是数组(是false),我也不是列表(is )。