休眠分页机制
问题内容:
我正在尝试对查询使用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
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_NAME querytype0_选择(选择-所有列名称。(不想在这里共享。)),其中rownum <=?