先上hibernate封装好的分页处理方法/**
 * 
 * 分 页
 * 
 * @param hql
 *            sql语句
 * @param p
 *            参数
 * @param page
 *            第几页
 * @param size
 *            每页几条
 * @return
 */
public List pageQuery(final String hql, final Integer page,
final Integer size, final Object... p) {

return super.getHibernateTemplate().executeFind(
new HibernateCallback() { public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query q = session.createQuery(hql);
// 处理参数
if (p != null)
for (int i = 0; i < p.length; i++) {
if (p[i].getClass() == String.class) {
q.setString(i, (String) p[i]);
} else if (p[i].getClass() == Integer.class) {
q.setInteger(i, (Integer) p[i]);
} else if (p[i].getClass() == Float.class) {
q.setFloat(i, (Float) p[i]);
} else if (p[i].getClass() == Double.class) {
q.setDouble(i, (Double) p[i]);
} else if (p[i].getClass() == Date.class) {
q.setDate(i, (Date) p[i]);
} }
// 处理分页
if (page != null && size != null && page > 0
&& size > 0)
q.setFirstResult((page - 1) * size).setMaxResults(
size);
// 返回
return q.list();
} });
}Hibernate分页

解决方案 »

  1.   

    这是第七页的数据,根据几张图,可以看出,中间很多条数据根本未查出来这是控制台输出的sql语句+我自己增加的输出pagenum=1
    Hibernate: select top 15 battery0_.ID as ID0_, battery0_.b_cinvcode as b2_0_, battery0_.b_cinvstd as b3_0_, battery0_.b_cinvname as b4_0_, battery0_.release_date as release5_0_, battery0_.b_code as b6_0_, battery0_.indentnum as indentnum0_, battery0_.tasknum as tasknum0_, battery0_.status as status0_, battery0_.batch as batch0_, battery0_.b_chargedate as b11_0_, battery0_.b_remainsdate as b12_0_, battery0_.getdept as getdept0_, battery0_.surveydate as surveydate0_, battery0_.b_indate as b15_0_, battery0_.b_outdate as b16_0_, battery0_.b_time as b17_0_, battery0_.stack as stack0_, battery0_.re as re0_ from gm_battery.dbo.battery battery0_ where battery0_.stack='1' order by battery0_.b_chargedate
    Hibernate: select count(*) as col_0_0_ from gm_battery.dbo.battery battery0_ where battery0_.stack='1'
    pagenum=2
    Hibernate: select top 30 battery0_.ID as ID0_, battery0_.b_cinvcode as b2_0_, battery0_.b_cinvstd as b3_0_, battery0_.b_cinvname as b4_0_, battery0_.release_date as release5_0_, battery0_.b_code as b6_0_, battery0_.indentnum as indentnum0_, battery0_.tasknum as tasknum0_, battery0_.status as status0_, battery0_.batch as batch0_, battery0_.b_chargedate as b11_0_, battery0_.b_remainsdate as b12_0_, battery0_.getdept as getdept0_, battery0_.surveydate as surveydate0_, battery0_.b_indate as b15_0_, battery0_.b_outdate as b16_0_, battery0_.b_time as b17_0_, battery0_.stack as stack0_, battery0_.re as re0_ from gm_battery.dbo.battery battery0_ where battery0_.stack='1' order by battery0_.b_chargedate
    Hibernate: select count(*) as col_0_0_ from gm_battery.dbo.battery battery0_ where battery0_.stack='1'
    pagenum=3
    Hibernate: select top 45 battery0_.ID as ID0_, battery0_.b_cinvcode as b2_0_, battery0_.b_cinvstd as b3_0_, battery0_.b_cinvname as b4_0_, battery0_.release_date as release5_0_, battery0_.b_code as b6_0_, battery0_.indentnum as indentnum0_, battery0_.tasknum as tasknum0_, battery0_.status as status0_, battery0_.batch as batch0_, battery0_.b_chargedate as b11_0_, battery0_.b_remainsdate as b12_0_, battery0_.getdept as getdept0_, battery0_.surveydate as surveydate0_, battery0_.b_indate as b15_0_, battery0_.b_outdate as b16_0_, battery0_.b_time as b17_0_, battery0_.stack as stack0_, battery0_.re as re0_ from gm_battery.dbo.battery battery0_ where battery0_.stack='1' order by battery0_.b_chargedate
    Hibernate: select count(*) as col_0_0_ from gm_battery.dbo.battery battery0_ where battery0_.stack='1'
    pagenum=4
    Hibernate: select top 60 battery0_.ID as ID0_, battery0_.b_cinvcode as b2_0_, battery0_.b_cinvstd as b3_0_, battery0_.b_cinvname as b4_0_, battery0_.release_date as release5_0_, battery0_.b_code as b6_0_, battery0_.indentnum as indentnum0_, battery0_.tasknum as tasknum0_, battery0_.status as status0_, battery0_.batch as batch0_, battery0_.b_chargedate as b11_0_, battery0_.b_remainsdate as b12_0_, battery0_.getdept as getdept0_, battery0_.surveydate as surveydate0_, battery0_.b_indate as b15_0_, battery0_.b_outdate as b16_0_, battery0_.b_time as b17_0_, battery0_.stack as stack0_, battery0_.re as re0_ from gm_battery.dbo.battery battery0_ where battery0_.stack='1' order by battery0_.b_chargedate
    Hibernate: select count(*) as col_0_0_ from gm_battery.dbo.battery battery0_ where battery0_.stack='1'
    pagenum=5
    Hibernate: select top 75 battery0_.ID as ID0_, battery0_.b_cinvcode as b2_0_, battery0_.b_cinvstd as b3_0_, battery0_.b_cinvname as b4_0_, battery0_.release_date as release5_0_, battery0_.b_code as b6_0_, battery0_.indentnum as indentnum0_, battery0_.tasknum as tasknum0_, battery0_.status as status0_, battery0_.batch as batch0_, battery0_.b_chargedate as b11_0_, battery0_.b_remainsdate as b12_0_, battery0_.getdept as getdept0_, battery0_.surveydate as surveydate0_, battery0_.b_indate as b15_0_, battery0_.b_outdate as b16_0_, battery0_.b_time as b17_0_, battery0_.stack as stack0_, battery0_.re as re0_ from gm_battery.dbo.battery battery0_ where battery0_.stack='1' order by battery0_.b_chargedate
    Hibernate: select count(*) as col_0_0_ from gm_battery.dbo.battery battery0_ where battery0_.stack='1'
    pagenum=6
    Hibernate: select top 90 battery0_.ID as ID0_, battery0_.b_cinvcode as b2_0_, battery0_.b_cinvstd as b3_0_, battery0_.b_cinvname as b4_0_, battery0_.release_date as release5_0_, battery0_.b_code as b6_0_, battery0_.indentnum as indentnum0_, battery0_.tasknum as tasknum0_, battery0_.status as status0_, battery0_.batch as batch0_, battery0_.b_chargedate as b11_0_, battery0_.b_remainsdate as b12_0_, battery0_.getdept as getdept0_, battery0_.surveydate as surveydate0_, battery0_.b_indate as b15_0_, battery0_.b_outdate as b16_0_, battery0_.b_time as b17_0_, battery0_.stack as stack0_, battery0_.re as re0_ from gm_battery.dbo.battery battery0_ where battery0_.stack='1' order by battery0_.b_chargedate
    Hibernate: select count(*) as col_0_0_ from gm_battery.dbo.battery battery0_ where battery0_.stack='1'
    pagenum=7
    Hibernate: select top 105 battery0_.ID as ID0_, battery0_.b_cinvcode as b2_0_, battery0_.b_cinvstd as b3_0_, battery0_.b_cinvname as b4_0_, battery0_.release_date as release5_0_, battery0_.b_code as b6_0_, battery0_.indentnum as indentnum0_, battery0_.tasknum as tasknum0_, battery0_.status as status0_, battery0_.batch as batch0_, battery0_.b_chargedate as b11_0_, battery0_.b_remainsdate as b12_0_, battery0_.getdept as getdept0_, battery0_.surveydate as surveydate0_, battery0_.b_indate as b15_0_, battery0_.b_outdate as b16_0_, battery0_.b_time as b17_0_, battery0_.stack as stack0_, battery0_.re as re0_ from gm_battery.dbo.battery battery0_ where battery0_.stack='1' order by battery0_.b_chargedate
    Hibernate: select count(*) as col_0_0_ from gm_battery.dbo.battery battery0_ where battery0_.stack='1'
      

  2.   

    ,中间想了很多办法,比如加上session.clear()也不行,这个版本的hibernate源代码又木有 ,根本无法追踪调试有木有大神在这方面经验丰富,给小弟解答下,不甚感激啊
      

  3.   

    1,Query有setParameter方法,
    2,你为啥不在后台输出查询结果要到前台去看结果?