我正在尝试对查询使用Hibernate分页(PostgreSQL)
我设置setFirstResult(0),setMaxResults(20)我的SQL查询。我的代码如下:
setFirstResult(0)
setMaxResults(20)
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 <=?