我的模型长这样:
我们通过http请求收集表单或移动端数据,springmvc将这些数据制作成模型(如用户模型)。
例如,我有一个请求如下:
http://localhost:8080/update?id=1919&email=xx@google.com
在控制器中,请求URL及其参数将自动转换为
User
对象。假设我在mysql中有一条id为1919的记录,且(id, email, weblik)这些列都有值。
正如你所看到的,通过web或移动端传递的用户对象具有两个属性
http://localhost:8080/update?id=1919&email=xx@google.com
其中id和email具有值,而weblink没有值。
因此,如果我执行
save
方法,将会更新email字段的值为xx@google.com
,同时将weblink字段更新为NULL
,但我并不想更新weblink字段,我只是想更新email字段。我有两种方法来解决这个问题,但它们都不够优雅。
5.1 首先加载用户对象,然后再进行更新
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name="email")
private String email;
@Column(name = "weblink")
private String webLink;
//getter & setter
}
@RequestMapping(method = RequestMethod.GET, value = "/update0")
public User update(@ModelAttribute("User") User user){
System.out.println(user.getId());
System.out.println(user.getEmail());
System.out.println(user.getWebLink());
return userRepository.save(test);
}
User userExist = userRepository.findOne(user.getId());
userExist.setEmail(user.getEmail());
//or using
//BeanUtil.copyProprty(formDto,modle)
userRepository.save();
我尝试使用@DynamicUpdate
来更新用户模型,但它没有起作用。
是否还有其他方法可以更新用户模型而不需要额外的工作呢?
谢谢提前。