daoImpl 里面的
public void update(DaUser daUser) {

log.debug("开始更新用户详细信息");
this.getHibernateTemplate().saveOrUpdate(daUser);
}Action里面: public String add() throws Exception {
Map<String, Object> session = ActionContext.getContext().getSession();
String yanzhengma = session.get("yanzhengma").toString(); Encode encode = new Encode();
log.debug("判断输入的验证码是否正确");
if (encode.encodeByMD5(this.yanzhengma.toUpperCase())
.equals(yanzhengma)) {
log.debug("输入的验证码正确");
log.debug("准备添加用户详细信息");
DaUser daUser = new DaUser();
daUser.setUserCompany(userCompany);
daUser.setUserUrl(userUrl);
daUser.setUserRealname(userRealname);
daUser.setUserSex(userSex);
daUser.setUserPhone(userPhone);
daUser.setUserFax(userFax);
daUser.setUserAddress(userAddress);
daUser.setUserCode(userCode);
daUser.setUserShouji(userShouji);
daUser.setUsername(username);
log.debug("------------------username:" + username);
if(null!=userService.find(username)){
log.debug("更新用户详细信息.");
if(userService.update(daUser)){
log.debug("更新用户详细信息成功.");
return SUCCESS;
}else{
log.debug("更新用户信息失败");
return ERROR;
}
}
if (userService.add(daUser)) {
log.debug("添加详细信息成功");
return SUCCESS;
}
log.error("添加信息信息失败");
return ERROR;
} else {
log.debug("输入的认证码错误");
return ERROR;
}
}
怎么调用这个方法的时候都是save  而不是update啊?

解决方案 »

  1.   

    后台报的异常:
    Caused by: java.sql.BatchUpdateException: Duplicate entry 'fdsss' for key 2
    我想,如果不是insert 的话 不会报这个的,因为insert的时候  之前已经有这个id的数据了catch出来的异常:
            更改用户时出错.org.springframework.dao.DataIntegrityViolationException:
    Could not execute JDBC batch update; nested exception is org.hibernate.exception
    .ConstraintViolationException: Could not execute JDBC batch update
      

  2.   

    改类异常的总结
       http://hi.baidu.com/wjx_pl/blog/item/f115004a66c6552009f7eff9.html
      

  3.   

    临时对象是不能被更新的
    比如: DaUser daUser = new DaUser();
    是临时对象,
    如果要执行更新,应该先从数据库中加载DaUser对象
    之后对其属性进行修改,之后再调用
    saveOrUpdate才会更新,也就是说update需要有id
      

  4.   

    是save 还是update 是通过oid对应在表中的主键是否已经存在来判断
    这里用来判断的username是主键吗
      

  5.   


    谢谢你哈,我添加了个Id 就可以了。
    但我还是new一个对象的啊?这是怎么回事呢?