如何在不陷入无限反序列化循环的情况下反序列化与渴望双方的一对多关系
how to deserialize one to many relationship with both eager sides without ending up in infinite deserialization loop
这是我的产品class
@Entity
public class Product {
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="listingGroup_id")
@JsonBackReference
public ListingGroup listingGroup;
这是我的 groupProduct class
@Entity
public class GroupProduct {
@OneToMany(mappedBy = "listingGroup", fetch = FetchType.EAGER)
@JsonManagedReference
Set<Product> products;
监狱:
- 当我查询产品时,我想要带有 ProductGroup 的产品
(ProductGroup里面的products不要再序列化了)
- 当我查询 GroupProduct 时,我想要里面的产品(没有这些产品列表,每个产品再次包含 GroupProduct)
已经尝试过
JsonBackReference, JsonManagedReference:
GroupProduct 一切正常,但是
问题:反序列化的产品不包含组
产品:{id: 1, ... groupProduct: null}
JsonIdentityInfo:我无法再反序列化对象
java.lang.IllegalArgumentException: 找不到 return 类型值的转换器...
环境
- spring 开机 1.5.8
- 休眠 5.0.12
- 'jackson-annotations',版本:'2.8.0'
- 'jackson-databind',版本:'2.8.7'
我认为你需要 @JsonIgnoreProperties 注释,像这样:
@JsonIgnoreProperties("products")
public ListingGroup listingGroup;
或者像这样:
@JsonIgnoreProperties("listingGroup")
Set<Product> products;
或两者。
这是我的产品class
@Entity
public class Product {
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="listingGroup_id")
@JsonBackReference
public ListingGroup listingGroup;
这是我的 groupProduct class
@Entity
public class GroupProduct {
@OneToMany(mappedBy = "listingGroup", fetch = FetchType.EAGER)
@JsonManagedReference
Set<Product> products;
监狱:
- 当我查询产品时,我想要带有 ProductGroup 的产品 (ProductGroup里面的products不要再序列化了)
- 当我查询 GroupProduct 时,我想要里面的产品(没有这些产品列表,每个产品再次包含 GroupProduct)
已经尝试过
JsonBackReference, JsonManagedReference:
GroupProduct 一切正常,但是
问题:反序列化的产品不包含组 产品:{id: 1, ... groupProduct: null}
JsonIdentityInfo:我无法再反序列化对象 java.lang.IllegalArgumentException: 找不到 return 类型值的转换器...
环境
- spring 开机 1.5.8
- 休眠 5.0.12
- 'jackson-annotations',版本:'2.8.0'
- 'jackson-databind',版本:'2.8.7'
我认为你需要 @JsonIgnoreProperties 注释,像这样:
@JsonIgnoreProperties("products")
public ListingGroup listingGroup;
或者像这样:
@JsonIgnoreProperties("listingGroup")
Set<Product> products;
或两者。