HibernateTemplate这个问题简单吗?
在使用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,由于取的方式不一样可能会造成同一条数据在第一页和第二页中出现而有的数据则不会取出来。。
[解决办法]
不知道楼主为什么,第一页,和第二页会用两个不同的sql呢?
看一下简单点的例子吧。
http://www.beansoft.biz/?p=1804
[解决办法]