Java 类Rest控制器中的Update方法

Java 类Rest控制器中的Update方法,java,hibernate,rest,spring-mvc,spring-data,Java,Hibernate,Rest,Spring Mvc,Spring Data,我想为实体更新编写类似rest的方法。在本例中,我从url检索实体id,从请求体检索数据。问题在于将id与bean绑定。因为EntityManager和Spring数据Crud Repo都没有更新(id,bean)方法。所以我可以自己设置 @RequestMapping(value = "/{id}", method = RequestMethod.POST) public String update(@PathVariable("id") Long id, @Valid User user,

我想为实体更新编写类似rest的方法。在本例中,我从url检索实体id,从请求体检索数据。问题在于将id与bean绑定。因为EntityManager和Spring数据Crud Repo都没有
更新(id,bean)
方法。所以我可以自己设置

@RequestMapping(value = "/{id}", method = RequestMethod.POST)
public String update(@PathVariable("id") Long id, @Valid User user, BindingResult bindingResult) {
    if (bindingResult.hasErrors()) {
        user.setId(id);   //Very bad
        return "usersEdit";
    }
    user.setId(id);  //Bad
    repository.save(user);
    return "redirect:/users/" + id;
}
或者把干涸的身份证作为私人领域放到表格中。
是否还有其他解决方案?

在Spring 3.1中,如果路径变量和模型属性名称相同,并且有一个转换器从路径变量值实例化模型属性,则将从路径变量实例化@ModelAttribute:

@RequestMapping(value="/{account}", method = RequestMethod.PUT) public String update(@Valid @ModelAttribute Account account, BindingResult result) { if (result.hasErrors()) { return "accounts/edit"; } this.accountManager.saveOrUpdate(account); return "redirect:../accounts"; } @RequestMapping(value=“/{account}”,method=RequestMethod.PUT) 公共字符串更新(@Valid@modeldattribute帐户,BindingResult){ if(result.hasErrors()){ 返回“账户/编辑”; } 这是.accountManager.saveOrUpdate(account); 返回“重定向:../accounts”; } 完整示例可从以下网址获得: