我在Sping Boot 中创建了更新方法。它创建新记录而不是更新记录。
已尝试代码:
控制器:
@PutMapping("update/{id}")
public Users updateUser(@PathVariable Integer id, @RequestBody Users user) {
user.setFname(user.getFname());
user.setLname(user.getLname());
user.setAddress(user.getAddress());
user.setTelno(user.getTelno());
return serveiceClass.updateUserbyId(id, user);
}
售后服务:
public Users updateUserbyId(Integer id, Users users) {
return repositoryInterface.save(users);
}
我该如何解决这个问题?
2条答案
按热度按时间nhaq1z211#
您没有检查用户是否存在,而是通过调用
save
方法创建新记录。save
方法总是插入新行,如果给定对象中的id在DB中不存在,在您的情况下,user
具有id0
,我猜,这就是为什么它插入新记录。您需要从给定的ID中获取User并更新DB中的现有记录。在服务类中再创建一个方法
然后...
mm9b1k5b2#
我的一个初级正面临着这个问题,当检查时,我发现他也在更新用户的主键/ID。这可能不是可接受的解决方案,但是请检查你的id(你不能在更新用户的同时更新你的id/主键)