我的数据库中有一些虚拟数据,其中一个“activity”示例只包含一个activityId作为其属性。Id是字符串,目前是手动设置的。这只是一个测试/虚拟项目。
我在我的spring Boot 项目中调用了一个@RestController,它有一个putmapping,可以保存更改后的对象。
我想更新一个现有的Activity,只需要更改它的ID,看看它是否工作。
@PutMapping("/activity/{id}")
public ResponseEntity<Activity> updateActivity(@PathVariable String id, @RequestBody Activity activity) {
Optional<Activity> activityOptional = activityRepo.findById(id);
if (activityOptional.isPresent()) {
activityRepo.save(activity);
return new ResponseEntity<>(activity, HttpStatus.OK);
} else {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
}
在postman中,我做了一个put请求,调用url:本地主机:8080/活动/0001
因为我想更新id=0001的活动。我想将它更新为,比如说,0033。
在postman中,我输入了我希望它更改为的原始json格式:
{
"activityId": "0033"
}
通过这样做,它不会更新Activity,而是使用新ID创建一个新Activity。
如何实际更新活动的ID?
1条答案
按热度按时间ie3xauqp1#
JPA需要确定
save
是新的还是更新的,为此,默认情况下,它将使用看起来像您的ID的主键,这意味着更改ID将告诉JPA这是一个新条目。最简单的方法可能是使用原生查询。在您的存储库中,使用类似以下的方法: