循环修改hibernateTemplate查询出来的list

时间:2022-04-09 02:40:49
循环修改hibernateTemplate查询出来的list


通过hibernateTemplate从数据库查询出来的是一个list,然后通过循环来修改list里面每一个对象的属性值,只能第一个,然后就报错了,怎么回事啊??

9 个解决方案

#1


报什么错???

#2


把错误也贴出来看看啊

#3


看看你list获得的数量对不

#4


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

#5


应该是两个session的问题,你的某条数据在两个session中(也就是前一个session还没关闭,后一个已经打开)。

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

#6


如果你在某个action中,去掉其他的数据库操作,只做查询list和update,肯定是没有错的。

你应该修改其他的代码。

#7


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

引用 4 楼 caiqien 的回复:
报错就是无法锁定资源。数据库那的sql语句没法发出去。list里面获取到的数量是正确的。
但是如果按照我上面那个程序执行的话,只能修改list里的第一条记录然后就报错了。
不过我查找了一下现在解决了,在那里循环更新的时候是不……
那个代码能够修改list一条记录,那是不是打开session修改了那条记录之后还没有关闭就又修改另外一条?这个hibernateTamplate执行完了以后应该会自动关闭session的啊。

#8


应该是循环里一条都没执行成功!!

#9


引用 8 楼 liangtu33 的回复:
应该是循环里一条都没执行成功!!
不是的,是可以成功修改一条数据的,循环到第二条数据要更新的时候才报错的。我对照着数据库来测试的。我上面的action是没有别的语句操作数据库的,只有一条语句调用下面底层的这个方法。我也很纳闷怎么会出现这种情况。

#1


报什么错???

#2


把错误也贴出来看看啊

#3


看看你list获得的数量对不

#4


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

#5


应该是两个session的问题,你的某条数据在两个session中(也就是前一个session还没关闭,后一个已经打开)。

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

#6


如果你在某个action中,去掉其他的数据库操作,只做查询list和update,肯定是没有错的。

你应该修改其他的代码。

#7


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

引用 4 楼 caiqien 的回复:
报错就是无法锁定资源。数据库那的sql语句没法发出去。list里面获取到的数量是正确的。
但是如果按照我上面那个程序执行的话,只能修改list里的第一条记录然后就报错了。
不过我查找了一下现在解决了,在那里循环更新的时候是不……
那个代码能够修改list一条记录,那是不是打开session修改了那条记录之后还没有关闭就又修改另外一条?这个hibernateTamplate执行完了以后应该会自动关闭session的啊。

#8


应该是循环里一条都没执行成功!!

#9


引用 8 楼 liangtu33 的回复:
应该是循环里一条都没执行成功!!
不是的,是可以成功修改一条数据的,循环到第二条数据要更新的时候才报错的。我对照着数据库来测试的。我上面的action是没有别的语句操作数据库的,只有一条语句调用下面底层的这个方法。我也很纳闷怎么会出现这种情况。