1.Dao层方法:public List findPageByCriteria(final DetachedCriteria detachedCriteria,final int pageSize, final int startIndex) {
List result = (List) this.getHibernateTemplate().execute( new HibernateCallback(){
public Object doInHibernate(Session session)throws HibernateException, SQLException {
// 由分离标准产生可执行的标准
Criteria criteria = detachedCriteria
.getExecutableCriteria(session);
// 获取指定位置的数据
List result = criteria.setFirstResult(startIndex).setMaxResults(pageSize).list();
return result;
}
}, true);
return result;
}
这个方法在第一次访问jsp时会用到,在该jsp中按条件查询时也用到。
2.Service层,调用它的代码: List content = this.recordDAO.findPageByCriteria(detachedCriteria, pageSize, (currentPage - 1) * pageSize);
问题:只有四个条件组合时才产生,第一次查询时发查询不到记录,但数据库中的是有的,这时criteria的firstResult为当前页的开始行数(我先显示第8页再查询时,pageSize=10,这时firstResult=70);第二次及以后查询时就查得到记录,这时criteria的firstResult为0。
请问这种查询时又不成功啊?
多谢!
List result = (List) this.getHibernateTemplate().execute( new HibernateCallback(){
public Object doInHibernate(Session session)throws HibernateException, SQLException {
// 由分离标准产生可执行的标准
Criteria criteria = detachedCriteria
.getExecutableCriteria(session);
// 获取指定位置的数据
List result = criteria.setFirstResult(startIndex).setMaxResults(pageSize).list();
return result;
}
}, true);
return result;
}
这个方法在第一次访问jsp时会用到,在该jsp中按条件查询时也用到。
2.Service层,调用它的代码: List content = this.recordDAO.findPageByCriteria(detachedCriteria, pageSize, (currentPage - 1) * pageSize);
问题:只有四个条件组合时才产生,第一次查询时发查询不到记录,但数据库中的是有的,这时criteria的firstResult为当前页的开始行数(我先显示第8页再查询时,pageSize=10,这时firstResult=70);第二次及以后查询时就查得到记录,这时criteria的firstResult为0。
请问这种查询时又不成功啊?
多谢!
问题解决了
当进行任何组合方式的条件查询时,只要在action中将currentPage=1就可以了。