精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-09-21
我在使用Query查询的时候,如果使用Query.list()返回一个List类型,程序没什么错误 ,但是使用Query.iterator()返回一个Iterator类型,程序报错:could not get next iterator result。具体的代码是: Query queryObject = getSession().createQuery("from Teacher"); queryObject.setCacheable(true); //List list = queryObject.list();//返回正确 return queryObject.iterate();//程序报错 给解决一下吧。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-09-21
could not get next iterator result。也就是list.size()==0
|
|
返回顶楼 | |
发表时间:2006-09-21
如果list.size() == 0,转成iterate()应该没问题啊!
异常只会在没调用hasNext()时,调用next()才会报! |
|
返回顶楼 | |
发表时间:2006-09-21
哈哈,说错了。建议看文档的第12章 事务和并发
|
|
返回顶楼 | |
发表时间:2006-09-21
我又看了一遍事务与并发,但是还是不能找出问题所在,给个详细的介绍,可以吗?谢谢
|
|
返回顶楼 | |
发表时间:2006-09-21
可能是你的DAO沒有交由HibernateTransactionManager來管理的原因
当然你可以试试看看 http://developer.spikesource.com/spikewatch.logs/fedora-3-i386/2083/hibernate/reports/clover/org/hibernate/impl/IteratorImpl.html |
|
返回顶楼 | |
发表时间:2006-09-21
query.iterate(),则是首先通过一条Select SQL 获取所有符合查询条件的记录的 id,再对这个id 集合进行循环操作,通过单独的Select SQL 取出每个id 所对应的记 录,可能是session关闭就不能Iterator
|
|
返回顶楼 | |
发表时间:2006-09-22
有什么好的解决方法吗?或者说正确的使用方法。
|
|
返回顶楼 | |
发表时间:2006-09-22
1不要在关了session之后再用
2如果要用可以先变成java.util.list再用。。 |
|
返回顶楼 | |
发表时间:2006-09-22
首先Session没有关闭
其次,如果把Iterator再转成List,它本身的作用还存在吗? |
|
返回顶楼 | |