commit放在循环外面了~~~~最后answer对象里放的肯定是最后一个值么~~~
new 语句放在循环里面会没循环一次就产生一个新的answer对象,调试一下,一步一步的就看清楚了

解决方案 »

  1.   

    to:
    coder000() ( ) 信誉:100我的commit是放在最后一起提交的,因为每一次for都更新的话那可不行啦.
    按我理解,应该是二种情况结果一样才对,所以我对于这样的结果很迷惑....希望大家帮忙一下!
      

  2.   

    我在hibernate2下测试这2种写法运行的结果是一样。我不知道你的配置是否正确,还是你用的是hibernate3,hibernate3的更新有更简单的方式,一般是不这样用的。
      

  3.   

    to:
    ljw714() ( ) 信誉:100 谢谢你的回答.
    我用的是hibernate3,以前我是用hibernate2的,没碰到过这种情况.
    你说的hibernate3有更简单的更新方式,可以举个例子吗?非常感谢......
      

  4.   

    Answer answer=new Answer();  
    他一直在new啊。。他循环一次就new了一次。。又回到了初使。
      

  5.   

    但我每个for都有update()阿,不是update一次就放到缓存一次吗?
    那应该和new位置无关阿...
      

  6.   

    hibernate3可以直接执行HQL语句进行更新。例如String hql = "update Answer set password='答案' where id = 1"; Query q = session.createQuery(hql); q.executeUpdate();
      

  7.   

    to:
    ljw714() ( ) 信誉:100
    我循环时,不单单update该对象,还要进行其它的操作阿,比如修改相应的其它表阿...
      

  8.   

    for(int i=0;i<answerids.length;i++){
    //Answer answer =new Answer();    //for循环内new
    Answer answer=(Answer) session.load(Answer.class,new Long(answerids[i]));session.evict(answer);  <--------- evict!!!!answer.setStatus("答案");
    session.update(answer);
    then I dont think you will have any problem