Spring MVC意外更新PO的问题

原来是Spring MVC处理POST请求过程中,(默认)还要回调一次formBackingObject来获取commond,然后填充数据,所以,如果formBackingObject返回了PO(Hibernate容器内对象),就会被修改,并波及到数据库。

 package org.powerstone.ca.web;
public class MyInfoFormController{
…………………………
…………………………
protected Object formBackingObject(HttpServletRequest request) throws
ServletException {
User user =userManager.findUser(caDelegater.getRemoteUser(request));
if (log.isDebugEnabled()) {
log.debug("entering 'formBackingObject' user[" + user+"]");
}
/**
* 如果直接返回userManager.findUser(),会出现意外情况:密码被修改
* 推测原因:因为返回的userManager.findUser()是容器(hibernate容器)内对象即PO,
* 所以spring进行数据绑定时会发生意外更新
*/
User result=new User();
result.setEmail(user.getEmail());
result.setMemo(user.getMemo());
result.setRealName(user.getRealName());
result.setSex(user.getSex());
result.setUserName(user.getUserName());
return result;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值