我有一个使用Spring Security和Keycloak进行身份验证/访问管理的spring Boot应用程序。 在本地测试keycloak时,一切似乎都很好,但是当我现在在线使用keycloak时,出现错误在用户登录后提交响应后,无法调用sendError()这些是Spring Boot ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我收到此错误。 提交响应后无法调用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);
}
}
我可以对/ details进行POST调用; 成功添加详细信息。 但是当我对/ getAllProducts进行GET调用时,出现此错误响应已提交后无法调用sendError()
这是双向关系的问题,因为它们相互引用,反序列化时,Jackson无限循环运行。 我的第一个建议是在关系的一端添加@JsonIgnore
。
@OneToOne(mappedBy = "details")
@JsonIgnore
private Product product;
之后,如果这解决了您的问题,则可以查看@ JsonManagedReference / @ JsonBackReference和@JsonIdentityInfo。
您也可以查看此链接以获得更多信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.