一尘不染

Hibernate中的setMaxResults(N)如何工作?

hibernate

我正在使用带有Hibernate的MS SQL Server 2008。我的问题是Hibernate如何实现setMaxResults

采取以下简单方案。

如果我有一个返回100行的查询,并且如果我将1传递给setMaxResults,这会影响SQL Server本身返回的结果(就像运行一条select top 1语句一样),还是Hibernate首先获取所有结果(在这种情况下为所有100行)并挑选最高的自己?

我问的原因是,当行数开始增加时,它将出现巨大的性能问题。

谢谢。


阅读 530

收藏
2020-06-20

共1个答案

一尘不染

Hibernate将为所有支持限制查询的方言生成一个限制类型查询。由于SQLServerDialect支持此功能(请参阅org.hibernate.dialect.SQLServerDialect.supportsLimit().getLimitString()),您将获得select top 1-query。

如果您想绝对确定,可以打开调试日志记录,或启用showSql-option和test。

2020-06-20