我在测试类中写了一个测试hibernate显示分页的结果,可当我加入for循环时就会报session对象已关闭,不加就返回一条记录不会报错。我show.selectdata(0,2);这个方法是查询的动态分页结果集,里面用的是 query.setFirstResult(start); query.setMaxResults(end);public void testSelectdata() {
List<Yuangong> list = null;
// for(int i=1;i<3;i++)
// {
 // list= show.selectdata((i-1)*2,2);
  list= show.selectdata(0,2);
//}

System.out.println(list.size());
for (Iterator<Yuangong> yg = list.iterator(); yg.hasNext();) {
yf = yg.next();
System.out.println(yf.getId());

}
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【yanghaizi123】截止到2008-07-01 12:21:46的历史汇总数据(不包括此帖):
    发帖数:1                  发帖分:20                 
    结贴数:0                  结贴分:0                  
    未结数:1                  未结分:20                 
    结贴率:0.00  %            结分率:0.00  %            
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    1.改对应的hibernate映射 lazy="false"
      

  3.   

    看看hbm文件和cfg文件怎么配的
      

  4.   

    帖出的内容不太详细,不能够给出你准确的答案。
    建议等你循环完毕后再关闭session.
      

  5.   

    估计是延迟加载的问题,延迟加载的时候关联的属性没有立即获取,这个时候session却关闭了!
    所以报错了,不过具体问题得看你的配置文件。
      

  6.   

    启动一个session 是要时间的。
    循环开启速度太快。当前一个 session还在关闭的时候 ,后一个session就开始打开
      

  7.   

    你的用是哪个查询方法?如果是load方法必须把延迟加载关闭.
    如果不设置lazy=false 那么就要保证session不被清空.
    也就是说.使用load方法必须保证是同一个session.
    在类级别里.延迟加载是会影响load方法的.如果使用其他查询方法就不会.