在使用HibernateTemplate使用翻页功能遇到一个问题,小弟不才百思不得其解,未能彻底了解HibernateTemplate故向大侠们求解,望不吝赐教代码如下:
DetachedCriteria d= DetachedCriteria.forClass( Test.class);
d.addOrder(Order.desc("time"));
getHibernateTemplate().findByCriteria(filter, pageNumber * pageSize, pageSize);执行第一页生成对应的SQL如下:
 select * from ( select this_.STCD as STCD1_0_, this_.TM as TM1_0_, this_.Z as Z1_0_, this_.Q as Q1_0_ from ST_R this_   order by this_.TM desc ) where rownum <= ?
执行第二页和之后页数都会对应的SQL如下:
select * from ( select row_.*, rownum rownum_ from ( select this_.STCD as STCD1_0_, this_.TM as TM1_0_, this_.Z as Z1_0_, this_.Q as Q1_0_ from ST_R this_  order by this_.TM desc ) row_ ) where rownum_ <= ? and rownum_ > ?
使用的是oracle数据库。
第一句SQL和第二句SQL的ROWNUM,由于取的方式不一样可能会造成同一条数据在第一页和第二页中出现而有的数据则不会取出来。。