Hibernate Criteria 支持提供了一个 setMaxResults()
方法来限制从数据库返回的结果。
我在他们的文档中找不到任何答案 - 这是如何实现的?是查询整个结果集,然后只返回请求号吗?或者它真的限制了数据库端的查询(想想 mySql 中的 LIMIT 关键字)。
这很重要,因为如果查询可能会返回很多结果,我真的需要知道 setMaxResults()
是否仍会查询数据库中的所有行(这很糟糕) .
此外 - 如果它真的限制了数据库端的行数,它是如何实现这种跨数据库的(因为我不认为每个 rdbms 都支持像 mySql 那样的 LIMIT 功能)。
最佳答案
Hibernate 要求数据库限制查询返回的结果。它通过方言执行此操作,方言使用任何特定于数据库的机制来执行此操作(因此对于 SQL Server,它将执行诸如“select top n * from table”之类的操作,Oracle 将执行“select * from table where rownum < n ”,MySQL 将执行“select * from table limit n”等)。然后它只返回数据库返回的内容。
关于java - Hibernate Criteria Limit 机制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7264286/