【问题标题】:Jackson @JsonBackreference for embedded or nested classesJackson @JsonBackreference 用于嵌入式或嵌套类
【发布时间】:2015-12-09 16:42:57
【问题描述】:

我以这种方式建立父子关系(来自旧系统)

@Entity
@Table
class A implements Serializable {

    ........
    @jsonmanagedreference("test")  
    @OneToMany(mappedBy="PK.id", fetch = FetchType.LAZY,)
    Set<B> b = new HashSet<B>()

    ......
    setters / getters

}



@Embeddable
class PK {

   @jsonbackreference("tets") // can't find it 
   @ManyToOne
   @JoinColumns
   A a

}

@Entity
@Table
class B implements Serializable {

   @EmbeddedId
   private PK pk;

   setters / getters 

}

它适用于常规操作,问题是我无法序列化 A 对象,因为循环引用。 在我尝试将 @jsonmanagedreference 添加到 A.b 并将 @jsonbackreference 添加到 PK.a 之后它不起作用,因为它找不到 JsonBackReference,如果嵌入类或嵌套的子级,有没有办法在序列化期间管理父子关系?

【问题讨论】:

  • 你可以把@JsonIgnore 放在public B getB()上。
  • 它是如何工作的?它只是跳过序列化,我需要在反序列化后恢复完整的对象

标签: java hibernate jackson


【解决方案1】:

我使用了这个解决方案: Read embedded object in Jackson

它对我有用,只需在嵌入式类引用上使用 @JsonUnwrapped 并将嵌入式 id 映射到:@JsonIdentityInfo

@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "yourEmbeddedIdAtribute")

【讨论】:

    猜你喜欢
    • 2022-12-10
    • 2020-05-20
    • 2017-05-25
    • 1970-01-01
    • 2015-05-28
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    相关资源
    最近更新 更多