当前位置:编程学习 > JAVA >>

循环修改hibernateTemplate查询出来的list




通过hibernateTemplate从数据库查询出来的是一个list,然后通过循环来修改list里面每一个对象的属性值,只能第一个,然后就报错了,怎么回事啊??
--------------------编程问答-------------------- 报什么错??? --------------------编程问答-------------------- 把错误也贴出来看看啊 --------------------编程问答-------------------- 看看你list获得的数量对不 --------------------编程问答-------------------- 报错就是无法锁定资源。数据库那的sql语句没法发出去。list里面获取到的数量是正确的。
但是如果按照我上面那个程序执行的话,只能修改list里的第一条记录然后就报错了。
不过我查找了一下现在解决了,在那里循环更新的时候是不能使用update的,我也不知道为什么。
反正我用了merge就解决了。觉得可能用saveorupdate也能解决问题,但是还没试过。感谢各位大侠热心相助!!!!!!! --------------------编程问答-------------------- 应该是两个session的问题,你的某条数据在两个session中(也就是前一个session还没关闭,后一个已经打开)。

引用 4 楼 caiqien 的回复:
报错就是无法锁定资源。数据库那的sql语句没法发出去。list里面获取到的数量是正确的。
但是如果按照我上面那个程序执行的话,只能修改list里的第一条记录然后就报错了。
不过我查找了一下现在解决了,在那里循环更新的时候是不能使用update的,我也不知道为什么。
反正我用了merge就解决了。觉得可能用saveorupdate也能解决问题,但是还没试过。感谢各位大侠热心相助!!!!!!! ……
--------------------编程问答-------------------- 如果你在某个action中,去掉其他的数据库操作,只做查询list和update,肯定是没有错的。

你应该修改其他的代码。 --------------------编程问答--------------------
引用 5 楼 liangtu33 的回复:
应该是两个session的问题,你的某条数据在两个session中(也就是前一个session还没关闭,后一个已经打开)。

引用 4 楼 caiqien 的回复:
报错就是无法锁定资源。数据库那的sql语句没法发出去。list里面获取到的数量是正确的。
但是如果按照我上面那个程序执行的话,只能修改list里的第一条记录然后就报错了。
不过我查找了一下现在解决了,在那里循环更新的时候是不……
那个代码能够修改list一条记录,那是不是打开session修改了那条记录之后还没有关闭就又修改另外一条?这个hibernateTamplate执行完了以后应该会自动关闭session的啊。 --------------------编程问答-------------------- 应该是循环里一条都没执行成功!! --------------------编程问答--------------------
引用 8 楼 liangtu33 的回复:
应该是循环里一条都没执行成功!!
不是的,是可以成功修改一条数据的,循环到第二条数据要更新的时候才报错的。我对照着数据库来测试的。我上面的action是没有别的语句操作数据库的,只有一条语句调用下面底层的这个方法。我也很纳闷怎么会出现这种情况。
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,