Hibernate错误分析:update

来源:互联网 发布:缠论均线指标公式源码 编辑:程序博客网 时间:2024/05/21 07:09
开发中碰到的一个问题,此处体现了对于Hibernate对象update操作的理解。
对于一个object的更新,代码如下:


   @RequestMapping(value="/{userid}/edit",method=RequestMethod.GET)
   //@RequiresPermissions("user:edit")
    publicString editUser(@PathVariable("userid") Long userid, Modelmodel){
       Useruser=this.userService.getUser(userid);
      model.addAttribute("user", user);
       return"/user/editUser";
    }
   
   
   @RequestMapping(value="/{userid}/edit",method=RequestMethod.POST)
   //@RequiresPermissions("user:edit")
    publicString editUser(@PathVariable("userid") Long userid,@ModelAttribute("user") User user){
      this.userService.updateUser(user);
       return"redirect:/user/manageUsers.w";
    }
   
但是运行过程中,数据并没有被更新,并出现错误:there is no ID for this object.
原因如下:
Hibernate对于游离状态的object,只有在DB中有对应的ID时才能成为游离状态。所以当对其进行更新时,Hibernate会主动根据此游离对象的ID去DB中查询对应的数据。如果游离对象没有ID,则不能根据此ID去数据库中查询,进而不可能对其进行更新。

=========
解决如下:
  @RequestMapping(value="/{userid}/edit",method=RequestMethod.POST)
   //@RequiresPermissions("user:edit")
    publicString editUser(@PathVariable("userid") Long userid,@ModelAttribute("user") User user){
       user.setId(userid); //增加此语句,设定游离对象的ID。
      this.userService.updateUser(user);
       return"redirect:/user/manageUsers.w";
    }
0 0
原创粉丝点击