java - getSingleResult() 改变 count() 查询

标签 java sql hibernate hql dao

我的应用程序使用 Hibernate 连接到 SQL Server。我最近将 DAO 函数从其中一个表中检索计数从“return query.getResultList().get(0)”更改为“query.getSingleResult()”。 sql count() 查询是通过namedQuery 提供的。

当我进行此更改时,我注意到 Hibernate 生成的 SQL 现在已从 选择计数(test0_.TestId)作为...... 到 选择前 2 个计数(test0_.TestId)作为...

为什么 Hibernate 会为 getSingleResult() 转换为 top 2 而不是 top 1? 有没有办法关闭 Hibernate 修改我的 count() 查询以使用 top 2 ?

谢谢

最佳答案

Why would Hibernate translate to top 2 and not top 1 for getSingleResult()?

Hibernate 选择 2 个条目以检查是否只有一个或多个。如果返回 2,则会抛出异常,因为结果不唯一。如果使用 top 1,Hibernate 将无法判断是否还有更多。

关于java - getSingleResult() 改变 count() 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7258732/

相关文章:

java - 如何为 Map<String, List<Object>> 和 MultivaluedMap<String, Object> 定义通用方法?

java - 从 fragment 类访问非 Activity 类中的共享首选项

SQL 查询给出一个数据值的总和并计算它超过 60 的次数

mysql - 在一个时间范围内分组为 5 分钟的间隔

java - 将数据检索为自定义对象 Hibernate Criteria

java - 这个 HQL 有什么问题? "No data type for node"

java - 如何创建一个具有应用范围的MAP?以及在哪里申报?

java - 使用注释生成 equals/hashcode/toString

sql - SQL Server 中等效的 CURSOR 函数

java.lang.NoSuchFieldError : namingStrategy