java - Hibernate Criteria Limit 机制?

标签 java sql hibernate criteria

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/

相关文章:

java - 如何使用 Quarkus/RestAssured 仅为一个测试用例注入(inject)模拟

MySQL - 选择矩形内的所有几何图形

mysql - 从父值计算子成员

php - 使用 INNER JOIN 在 3 个表中搜索关键字

java - 使用 spring 配置 hibernate

java - 用于 Cognito 的 Java 中的 AWS Lambda 响应

java - 将数据填充到 RecyclerView 中

在对象销毁之前清理 Java 资源

mysql - 父表中的单个主键 多个外键 hibernate 子表

java - Hibernate 列表与 JDBC 结果集