session.update(obj);并不是更新全部字段,对obj修改了多少个字段hibernate会自动生成相应的字段的update语句,可以打开showsql看看输出的SQL语句。

解决方案 »

  1.   

    如果是动态生成sql的话,hibernate就会只更新修改过的字段
    否则就会全部更改,效率低一些
      

  2.   

    首先查询出你要更新的对象,然后把这个对象的属性修改为你要更新的内容,然后用session.update()来更新这个对象。你对hibernate可能还不太熟悉,再多看看文档。
      

  3.   

    多谢各位,
    跟一般的查询一样吗?那么先查出来再修改属性,再传回去,会比以往一条sql语句修改效率低不少吗?
      

  4.   

    动态生成SQL方式,只更新修改过的字段
      

  5.   

    在hbm文件中的
    <class
    中添加
            dynamic-update="true"                   
    />
      

  6.   

    首先你需要先load出你的对象,更改之后进行saveOrUpdateUser user = session.load(User.class,new Long(1000));
    user.setName("xxx");
    session.saveOrUpdate(user);
     
    OK!