我在测试类中写了一个测试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());
}
}
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());
}
}
楼主【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
建议等你循环完毕后再关闭session.
所以报错了,不过具体问题得看你的配置文件。
循环开启速度太快。当前一个 session还在关闭的时候 ,后一个session就开始打开
如果不设置lazy=false 那么就要保证session不被清空.
也就是说.使用load方法必须保证是同一个session.
在类级别里.延迟加载是会影响load方法的.如果使用其他查询方法就不会.