Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用外键进行POST时使用Postman的Spring引导返回null_Spring_Spring Boot_Post_Request_Postman - Fatal编程技术网

使用外键进行POST时使用Postman的Spring引导返回null

使用外键进行POST时使用Postman的Spring引导返回null,spring,spring-boot,post,request,postman,Spring,Spring Boot,Post,Request,Postman,我正在尝试使用带Spring Boot的POSTMAN发出post请求 用户和角色之间的关系是多方面的 为什么角色返回:role:null 邮递员意见: { 邮递员输出: { "id": 29, "name": "usertest", "lastname": "usertest", "email": "usertest@gmail.com", "role": { "id": 1, "role": null } }

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

用户和角色之间的关系是多方面的

为什么角色返回:role:null

邮递员意见: {

邮递员输出:

{
    "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;
        }
    }

您正在将输入请求主体映射到用户对象,并通过调用userService.saveuser将其持久化到DB中,并且您没有使用持久化实体引用重新初始化用户属性。因此,它是普通POJO,而不是JPA托管实体。这就是为什么角色属性仍然为null

您可以从userService.saveuser方法返回持久用户,并从Controller方法返回。此外,您需要注意在用户内部加载角色,因为它是一个惰性属性

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