hibernate和session中的更新问题

struts2:登陆后已经将用户信息写进了userInfo实体;
同时session.setAttribute("user", userInfo);将用户信息写进了session。
另一个action中userInfo=(UserInfo)session.get("user");可以得到它的信息。
现在将userInfo.setPassword(password2);
在调用hibernate的update方法时super.getHibernateTemplate().update(userInfo);
变成了插入,控制台显示的也是insert,数据库里增加了一条信息,不是更新。
我知道上面这个错了,但不知道该换成哪种方法去做,这个是要实现一个用户修改密码的功能。

4个回答

你已经确定不是hibernate的问题了,而是struts的问题了吗?
如果是struts里你的两次session的值不一样,那我建议你用struts2封装好的map,它封装了session。你可以用你的action实现SessionAware接口就可以直接用map了。在struts2中用map比你用session好。
再次检查下对象是不是同一个对象.···祝你好运!

你把update()方法改成 merge()看看; 如果还有问题最好把源码那出来看看。

hibernate中如果你保存的对象是游离状态的那就是插入,如果是持久状态的就是更新了
改成了merge()还是有问题,你将这3个方法里面的代理id都看一下是不是一样的,有可能代理id都不一样了

this.userBiz.loginUser(this.user); 这个方法有没有问题哦?你看一下,这个返回的用户对象里标识符是不是为空?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐