【问题标题】:Jackson failed to deserialization OneToMany relationship entityJackson 未能反序列化 OneToMany 关系实体
【发布时间】:2017-10-01 10:48:29
【问题描述】:

我在两个实体之间有一个 oneToMany reltionShip:

public class Product  {
  @JsonBackReference
  private List<ProductDetail> listProductDetail;

还有

public class ProductDetail {
   @JsonManagedReference
   private Product product;

我正在尝试反序列化实体 ProductDetail,但我总是收到以下异常:

jackson can not handle managed/back reference 'defaultreference': back reference type (java.util.list) not compatible with managed type

我尝试了不同的 json 格式(包括 json 消息中的产品,删除此字段),但结果始终相同。

谁能告诉我这个错误是什么意思,如果可能的话,如何在不修改我的实体的情况下解决它(实体是我们数据模型组件的一部分,其他同事使用)

谢谢

【问题讨论】:

  • 感谢您的快速回复,我之前没有使用该注释,您能否添加更多详细信息如何添加它以及为什么我会收到该异常,我想知道杰克逊为什么会抛出那个错误?谢谢

标签: java json jackson json-deserialization jackson2


【解决方案1】:

您可以尝试在实体上使用@JsonIdentityInfo

public class Product  {
  @JsonIdentityInfo
  private List<ProductDetail> listProductDetail;

public class ProductDetail {
   @JsonIdentityInfo
   private Product product;

【讨论】:

  • 谢谢,有没有不修改我的实体的解决方案,因为它们由其他模块共享?你能帮忙请为什么杰克逊抛出那个异常?
  • @Zizou 你的意思是甚至不修改模型/实体中的注释吗?
  • 是的,不修改注释
猜你喜欢
  • 1970-01-01
  • 2020-06-15
  • 2019-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多