getSingleResult()改变count()查询

时间:2011-08-31 14:45:18

标签: java sql hibernate hql dao

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

当我做出这个改变时,我注意到Hibernate生成的SQL现在已经改变了 select count(test0_.TestId)为..... 至 选择前2个计数(test0_.TestId)为...

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

由于

2 个答案:

答案 0 :(得分:3)

  

为什么Hibernate会转换为前2位而不是topSingleResult()的前1位?

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

答案 1 :(得分:1)

如果没有一个结果,

getSingleResult会抛出异常。这样就可以检查是否返回了多行。