【问题标题】:Spring boot using Postman when making a POST with foreign key is returning null使用外键进行 POST 时使用 Postman 的 Spring Boot 返回 null
【发布时间】:2018-10-02 06:48:12
【问题描述】:

我正在尝试使用带有 Spring Boot 的 POSTMAN 发出发布请求

User 和 Role 之间的关系是(ManyToOne)。

为什么角色会返回这个:("role":null)

邮递员视图: {

    "name": "usertest",
    "lastname": "usertest",
    "email": "usertest@gmail.com",
    "role": {
        "id": 1


    }
}

邮递员输出:

{
    "id": 29,
    "name": "usertest",
    "lastname": "usertest",
    "email": "usertest@gmail.com",
    "role": {
        "id": 1,
        "role": null
    }
}

控制器:

@PostMapping("user")
    public ResponseEntity<User> addUser(@RequestBody User user){
        try {
            userService.save(user);
            HttpHeaders httpHeaders = new HttpHeaders();
            return ResponseEntity.status(HttpStatus.CREATED)
                    .headers(httpHeaders)
                    .body(user);
        }
        catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }

实体用户:

@ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(nullable = false, updatable = false)
    private Role role;

【问题讨论】:

    标签: spring spring-boot post request postman


    【解决方案1】:

    您正在将输入请求正文映射到 User 对象并通过调用 userService.save(user) 将其持久化到 DB 中,并且您不会使用持久化的实体引用重新初始化 user 属性。因此,它是一个普通的 POJO,而不是 JPA 托管实体。这就是“角色”属性仍然为空的原因。

    您可以从 userService.save(user) 方法返回持久用户,然后从 Controller 方法返回。还。您需要注意在 User 中加载 Role,因为它是一个 LAZY 属性。

    【讨论】:

      猜你喜欢
      • 2020-11-15
      • 2021-12-18
      • 1970-01-01
      • 2017-11-17
      • 2020-04-22
      • 1970-01-01
      • 2021-12-04
      • 2020-05-23
      • 2020-01-24
      相关资源
      最近更新 更多