public void listByPage(String hql, PageResult pageResult) {
try {
if (null == hql) {
return;
}
Query query = this.getSession().createQuery(hql);
query.setFirstResult(pageResult.getFirstRec());
query.setMaxResults(pageResult.getPageSize());
List ret = query.list();  在这个地方执行1-3遍没有问题但是执行到第4次的话就会不执行下去了断点跟踪到这里就没有执行了而且又没有报错
pageResult.setList(ret);

String queryString = "";
if (hql.toUpperCase().indexOf("SELECT") != -1) {
int i = query.getQueryString().toUpperCase().indexOf("FROM");
queryString = "Select count(*) "
+ hql.substring(i, hql.length());
} else {
queryString = "Select count(*) " + hql;
}
// 去掉ORDER BY 的部分
int j = queryString.toUpperCase().lastIndexOf("ORDER");
if (j != -1) {
queryString = queryString.substring(0, j);
}
Query cquery = this.getSession().createQuery(queryString);
cquery.setCacheable(true);
int recTotal = ((Long) cquery.iterate().next()).intValue();
pageResult.setRecTotal(recTotal);
} catch (Exception ex) { ex.printStackTrace();
}

解决方案 »

  1.   

    query.setFirstResult(pageResult.getFirstRec());pageResult.getFirstRec()得到的是几?
      

  2.   

    这个是一个分页的方法 我只要刷新页面4次然后第5次就会在List ret = query.list(); 的时候卡住
    然后注释掉pageResult.setList(ret);
    一下的代码就没有错误了 跪求这个是怎么回事,怎么没人理我啊 还是说的不够清楚吗
      

  3.   

    我测试了一下
    try {
    if (null == hql) {
    return;
    }
    Query query = this.getSession().createQuery(hql);
    query.setFirstResult(pageResult.getFirstRec()); query.setMaxResults(pageResult.getPageSize()); List ret = query.list();
    pageResult.setList(ret);                        Query cquery = this.getSession().createQuery(
    "Select count(*) " + hql);
    cquery.setCacheable(true);
    int recTotal = ((Long) cquery.iterate().next()).intValue();
    pageResult.setRecTotal(recTotal);
    } catch (Exception ex) { ex.printStackTrace();
    }这样也是只能执行4次 第5次是在第一个查询那里停止的
      

  4.   

    public void listByPage(String hql, PageResult pageResult) {
    try {
    if (null == hql) {
    return;
    }
        session = this.getSession();
    Query query = session.createQuery(hql);
    query.setFirstResult(pageResult.getFirstRec());
    query.setMaxResults(pageResult.getPageSize());
    List ret = query.list();
    pageResult.setList(ret); int recTotal = GetBySql(hql);
    pageResult.setRecTotal(recTotal);
    } catch (Exception ex) {
    ex.printStackTrace();
    }finally{
    releaseSession(session);
    releaseSession(session1);
    }
    } public int GetBySql(String sql) {
    session1 = this.getSession();
    Query cquery = session1.createQuery(sql);
    int max = cquery.list().size();
    return max;
    }你妹的 总算好了  结贴走人了 谢谢大家