如何将两个渴望的方面的一对多关系反序列化,而不会在无限的反序列化循环中结束

时间:2018-03-28 09:24:25

标签: java json hibernate spring-data-jpa jackson-databind

这是我的产品类

@Entity
public class Product {

    @ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name="listingGroup_id")
    @JsonBackReference
    public ListingGroup listingGroup;

这是我的groupProduct类

@Entity
public class GroupProduct {

    @OneToMany(mappedBy = "listingGroup", fetch = FetchType.EAGER)
    @JsonManagedReference
    Set<Product> products;

监狱

  1. 当我查询产品时,我想要ProductGroup的产品 (ProductGroup不应再次序列化其中的产品)
  2. 当我查询GroupProduct时,我想要内部的产品(没有这些产品列表,每个产品都包括GroupProduct)
  3. 已经尝试

    1. JsonBackReference,JsonManagedReference:

      GroupProduct让一切都很好,但是

      问题:反序列化的产品不包含该组 产品:{id:1,... groupProduct:null}

    2. JsonIdentityInfo:我无法再反序列化对象 java.lang.IllegalArgumentException:找不到类型返回值的转换器...

    3. 环境

      • spring boot 1.5.8
      • hibernate 5.0.12
      • 'jackson-annotations',版本:'2.8.0'
      • 'jackson-databind',版本:'2.8.7'

1 个答案:

答案 0 :(得分:1)

我认为您需要@JsonIgnoreProperties注释,如下所示:

@JsonIgnoreProperties("products")
public ListingGroup listingGroup;

或者像这样:

@JsonIgnoreProperties("listingGroup")
Set<Product> products;

或两者兼而有之。