use*_*413 0 spring jpa spring-data-jpa spring-boot
我收到此错误。 响应提交后无法调用 sendError() 有人能帮我找出原因吗?
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@OneToOne(
fetch = FetchType.LAZY,
cascade = CascadeType.ALL
)
@JoinColumn(name = "details_id")
private Details details;
//Getters and setters left out for brevity
}
@Entity
public class Details {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String name;
private String description;
private float price;
private float discount;
@OneToOne(mappedBy = "details")
private Product product;
}
@RestController
public class ProductController {
@Autowired
ProductRepository productRepository;
@GetMapping("/getAllProducts")
public Iterable<Product> getAllProducts(){
return productRepository.findAll();
}
}
@RestController
public class DetialsController {
@Autowired
ProductRepository productRepository;
@Autowired
DetailsRepository detailsRepository;
@PostMapping("/details")
public Details addDetails(@RequestBody Details details) {
Product newProduct = new Product();
newProduct.setDetails(details);
productRepository.save(newProduct);
return detailsRepository.save(details);
}
}
Run Code Online (Sandbox Code Playgroud)
我可以对 /details 进行 POST 调用;成功添加详细信息。但是当我对 /getAllProducts 进行 GET 调用时,我收到此错误 无法在响应提交后调用 sendError()
这是双向关系的问题,因为它们相互引用,在反序列化时,Jackson 无限循环运行。我的第一个建议是添加@JsonIgnore到关系的一端。
@OneToOne(mappedBy = "details")
@JsonIgnore
private Product product;
Run Code Online (Sandbox Code Playgroud)
之后,如果这解决了您的问题,您可以查看@JsonManagedReference/@JsonBackReference 和@JsonIdentityInfo。
您还可以查看此链接以获取更多见解
| 归档时间: |
|
| 查看次数: |
1317 次 |
| 最近记录: |