每次我是显示5行记录,现在我有16条记录,第一页显示1-5条,这没有问题,第二页显示6-15,这出问题了,我只要显示6-10条了但是它多显示了5条记录,第三页就显示7-16条了,有谁知道这是为什么吗?
谢谢了噢。hibernateTemplate是有Spring自动注入的,bean的配置如下:
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
   <property name="sessionFactory" ref="sessionFactory"></property>
  </bean>
假设现在是第一页,当点击下一页之后,first的值为5,max的值为10,setFirstResult从0开始。
下面是分页的代码。
public List<Pay> getAllPay(final int first,final int max,final String firstDate,final String secondDate){
return (List<Pay>)hibernateTemplate.executeFind(new HibernateCallback() {
@Override
public Object doInHibernate(Session session) throws HibernateException,
SQLException {
String hql = "from Pay p where 1 = 1";
if(null != firstDate && !firstDate.equals("")){
hql += " and p.opTime >= '" + firstDate + "'";
}
if(null != secondDate && !secondDate.equals("")){
hql += " and p.opTime < '" + secondDate + "'";
}
hql += " order by p.id desc";

Query query = session.createQuery(hql);
query.setFirstResult(first);
query.setMaxResults(max);
return query.list();
}
});
}谢谢啦。

解决方案 »

  1.   

    debug 看看first这个参数在翻页的时候是多少。
      

  2.   

    debug了的,第一页是0-5,第二页就是6,10
      

  3.   


    看return query.list()是不是6-10条如果是 那么就是你在给页面赋值的时候出错了
      

  4.   

    query.setFirstResult(first);  --这个是从几开始
    query.setMaxResults(max);     --这个是查几条 ,你一页5条就让它一直等于5
      

  5.   

    同意5楼的说法。
    setFirstResult 是起始数据,setMaxResults是查询显示的数据。如果放在分页程序里边 setFirstResult的值应该是 (当前页面-1)X每页条数,setMaxResults 就是每页的条数