如何通过 Postman 更新对象的 id

问题描述 投票:0回答:1

我的数据库中有一些虚拟数据,其中“活动”实例仅包含一个 activityId 作为其属性。 ID 是字符串,现在是手动设置的。这只是一个测试/虚拟项目。

我在我的 spring boot 项目中调用了一个@RestController,它有一个 putmapping 应该保存更改的对象。

我想更新一个现有的活动,只需更改它的 id 看看它是否有效。 putmapping如下:

@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);
        }
    }

在邮递员中,我提出了一个放置请求,我调用了 url:localhost:8080/activity/0001

因为我想用 id=0001 更新活动。我想将其更新为 0033.

在邮递员中,我输入了我希望它更改为的原始 json 格式:

{
    "activityId": "0033"
}

通过这样做,它不会更新活动,而是使用新 ID 创建一个新活动。

如何实际更新活动的 id?

java json spring-boot postman put
1个回答
0
投票

JPA 需要判断

save
是新的还是更新的。为此,默认情况下,它将使用看起来像您的 ID 的主键。这意味着更改您的 ID 将告诉 JPA 这是一个新条目。

最简单的方法可能是使用本机查询。在你的回购协议中,有一个类似的方法:

@Query(nativeQuery = true,
           value = "update activity set activityID = ?1 where activityId = ?2")
void updateActivityId(String newId, String oldId);
© www.soinside.com 2019 - 2024. All rights reserved.