apache2008 2009-05-10 23:31
浏览 277
已采纳

关于update 与 saveOrUpdate的区别.

public boolean update(User user) {
User u = (User) this.getSession().get(User.class, user.getId());
if(user.getPassword() != "") {
u.setPassword(user.getPassword());
}
if(user.getAddr() != "") {
u.setAddr(user.getAddr());
}
if(user.getPhone() != "") {
u.setPhone(user.getPhone());
}
this.getSession().flush();
this.getSession().update(u); //此句不能更新
//this.getHibernateTemplate().saveOrUpdate(u); //此句可以更新
this.getSession().beginTransaction().commit();
return true;
}

我想问一下为什么上面的代码 this.getSession().update(u); 执行完后数据库里面没有任何变化,而用this.getHibernateTemplate().saveOrUpdate(u); 却可以成功更新数据库?
[b]问题补充:[/b]
User u是session的 直接set这个PO就可以更新了 无需调用update

u.setPhone("111111");
this.getSession().beginTransaction().commit();

我也试过这样,可是还是不能更新.

  • 写回答

1条回答 默认 最新

  • beckrabbit 2009-05-12 01:00
    关注

    update和saveOrUpdate是用来对跨Session的PO进行状态管理的。
    你的User user传过来的时候不是在session中管辖的PO 执行update方法是没用的
    saveOrUpdate会先判断user是否在session中管理 如果不在会先save到session然后执行update 所以就更新了
    User u是session的 直接set这个PO就可以更新了 无需调用update

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘