使用外键进行POST时使用Postman的Spring引导返回null
我正在尝试使用带Spring Boot的POSTMAN发出post请求 用户和角色之间的关系是多方面的 为什么角色返回:role: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 } }
{
"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;