这是我的产品类
@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;
jail :
- 当我查询产品时,我想要带有 ProductGroup 的产品 (ProductGroup里面的产品不要再序列化)
- 当我查询 GroupProduct 时,我想要里面的产品(没有这些产品列表,每个产品都再次包含 GroupProduct)
已经尝试过
JsonBackReference, JsonManagedReference:
GroupProduct 一切正常,但是
问题:反序列化的产品不包含该组 产品:{id: 1, ... groupProduct: null}
JsonIdentityInfo:我无法再反序列化对象 java.lang.IllegalArgumentException: 没有找到类型为...的返回值的转换器
环境
- Spring 启动 1.5.8
- hibernate 5.0.12
- 'jackson-annotations',版本:'2.8.0'
- 'jackson-databind',版本:'2.8.7'
最佳答案
我想你需要@JsonIgnoreProperties注释,像这样:
@JsonIgnoreProperties("products")
public ListingGroup listingGroup;
或者像这样:
@JsonIgnoreProperties("listingGroup")
Set<Product> products;
或两者皆有。
关于java - 如何在不陷入无限反序列化循环的情况下反序列化与渴望双方的一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49530737/