当前位置:编程学习 > JAVA >>

一个hibernate criteria 分页的诡异问题

最近在做一个项目使用ssh架构,在测的时候出现一个很诡异的问题,使用hibernate 的criteria分页查询的时候,记录总数是对的,但最后一页的最后一条记录不能正常显示,查出来的不是最后一条,而是和之前查询结果中重复的一条记录,仔细检查了分页所使用的java bean没有问题,dao层的代码如下:
public List<ReaderPunishT> queryPunishRecords(
final ModelCriteria modelCriteria, final int start, final int length) {
return getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session) {
Criteria criteria = createCriteria(session, modelCriteria,
ReaderPunishT.class);
if (length > 0) {
criteria.setFirstResult(start);
criteria.setMaxResults(length);
}
criteria.addOrder(Order.desc("inDate"));
return criteria.list();
}
});
}

modelCriteria是封装好的查询条件。如果在方法中改成hql方式来查询,就是正确的,哪位大牛能帮忙指点一下呢,多谢!  --------------------编程问答-------------------- 可以把sql语句打印出来,然后把相应的值替换,在数据库中执行一次,看是否一致 --------------------编程问答-------------------- 首先说明,用HQL是不可能的,不同的数据库的查询方式不同,你说有重复,那肯定就是start算错了,不知道你start是不是(当前页数 - 1) * 你一页需要几条记录 --------------------编程问答-------------------- start计算的没有问题,length计算也没问题,就是每次查出最后一页的时候,最后一条不是应该显示的数据。 --------------------编程问答-------------------- 你把sql拷贝到数据库执行他一下便知
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,