【发布时间】:2020-07-03 17:02:14
【问题描述】:
我一直在研究 Hibernate,最近在使用 Hibernate 查询执行分页时遇到了一个奇怪的问题。
我有一个表,它有两列leaseNum、RegistraionDate
表中有12条记录,其中leaseNum列具有唯一值,RegistrationDate列具有相同的日期值。
我将查询设置为获取前 10 个结果作为第 1 页的一部分,方法是按列 RegistraionDate desc 排序。
我得到 12 个结果,它为我划分出 10 个结果,作为页面的一部分,我得到 2 个结果,但我得到的结果与我在第 1 页中得到的结果相同,因为 RegistrationDate 列具有相同的值。
抱歉,我之前提供了完整的细节,下面是我试图参考的场景的说明。
tmpQuery : "select * from CAMS_LEASE_DETAIL mylease0_
order by mylease0_.LEASE_REG_DATE desc"
LeaseNum RegDate
01.70837.012 24-02-2020 12:02:00
01.70837.011 07-02-2020 12:02:00
01.70837.010 04-02-2020 12:02:00
01.70837.004 17-01-2020 12:01:00
01.70837.005 17-01-2020 12:01:00
01.70837.007 17-01-2020 12:01:00
01.70837.008 17-01-2020 12:01:00
01.70837.009 17-01-2020 12:01:00
01.70837.003 17-01-2020 12:01:00
01.70837.002 17-01-2020 12:01:00
01.70837.001 17-01-2020 12:01:00
01.70837.006 17-01-2020 12:01:00
tmpQuery : "select * from CAMS_LEASE_DETAIL mylease0_
order by mylease0_.LEASE_REG_DATE desc"
第 1 页:
Query query = session.createQuery(tmpQuery);
query.setFirstResult(0);
query.setMaxResults(10);
后端查询
select * from
( select mylease0_.LEASE_NUMBER as LEASE_NUMBER18_2_,
mylease0_.LEASE_REG_DATE as LEASE_REG_DATE19_2_
from CAMS_LEASE_DETAIL mylease0_
where mylease0_.ADDRESS_NUMBER='18201'
order by mylease0_.LEASE_REG_DATE desc )
where rownum <= 10;
检索到的结果集是
01.70837.012 24-FEB-20
01.70837.011 07-FEB-20
01.70837.010 04-FEB-20
01.70837.001 17-JAN-20
01.70837.004 17-JAN-20
01.70837.005 17-JAN-20
01.70837.006 17-JAN-20
01.70837.007 17-JAN-20
01.70837.008 17-JAN-20
01.70837.009 17-JAN-20
第 2 页:
Query query = session.createQuery(tmpQuery);
query.setFirstResult(10);
query.setMaxResults(20);
后端查询
select * from
( select row_.*, rownum rownum_ from
( select mylease0_.LEASE_NUMBER as LEASE_NUMBER18_2_,
mylease0_.LEASE_REG_DATE as LEASE_REG_DATE19_2_
from CAMS_LEASE_DETAIL mylease0_
where mylease0_.ADDRESS_NUMBER='18201' o
rder by mylease0_.LEASE_REG_DATE desc )
row_ where rownum <= 20)
where rownum_ > 10
检索到的结果集是
01.70837.008 17-JAN-20
01.70837.009 17-JAN-20
而不是获得租约 01.70837.002、01.70837.003
我应该怎么做才能避免这个问题。
我们将不胜感激。
谢谢
【问题讨论】:
标签: java hibernate pagination