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();
我也试过这样,可是还是不能更新.
update和saveOrUpdate是用来对跨Session的PO进行状态管理的。
你的User user传过来的时候不是在session中管辖的PO 执行update方法是没用的
saveOrUpdate会先判断user是否在session中管理 如果不在会先save到session然后执行update 所以就更新了
User u是session的 直接set这个PO就可以更新了 无需调用update