Hibernate分页机制

我正在尝试对查询使用Hibernate分页(PostgreSQL)

我设置setFirstResult(0)setMaxResults(20)我的SQL查询。我的代码如下:

Session session = getSessionFactory().getCurrentSession();

session.beginTransaction();

Query query = session.createQuery("FROM Customers");

query.setFirstResult(0);

query.setMaxResults(20);

List<T> entities = query.list();

session.getTransaction().commit();

但是当查看SQL Hibernate日志时,我仍然看到完整的SQL查询:

Hibernate: select customer0_.id as id9_, customer0_.customer_name as dst2_9_, customer0_.addres as dst3_9_ from tbl_customers customer0_

为什么在Hibernate分页SQL日志查询中没有LIMIT OFFSET?

有人知道Hibernate分页机制吗?

我猜Hibernate将选择所有数据,将数据放入Resultset,然后在Resultset中进行分页,对吗?

回答:

我在查询和hibernate回叫中使用。两者都按预期工作。Hibernate

Query执行的结果介于给定的First和Max大小之间。在这里,好像您传递了SQL而不是HQL进行查询。如果是的话,那应该行不通。

-在这里查看我的代码。

        Query query = this.getSession().createQuery("FROM QueryType");

query.setFirstResult(0);

query.setMaxResults(20);

List toDelete = query.list();

并在日志中:

select * from(从MY_TBL_NAMEquerytype0_选择(选择-所有列名称。(不想在这里共享。))其中rownum <=?

以上是 Hibernate分页机制 的全部内容, 来源链接: utcz.com/qa/409717.html

回到顶部