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

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

    那个代码能够修改list一条记录,那是不是打开session修改了那条记录之后还没有关闭就又修改另外一条?这个hibernateTamplate执行完了以后应该会自动关闭session的啊。
      

  5.   

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