java - 如何在不陷入无限反序列化循环的情况下反序列化与渴望双方的一对多关系

标签 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;

jail :

  1. 当我查询产品时,我想要带有 ProductGroup 的产品 (ProductGroup里面的产品不要再序列化)
  2. 当我查询 GroupProduct 时,我想要里面的产品(没有这些产品列表,每个产品都再次包含 GroupProduct)

已经尝试过

  1. JsonBackReference, JsonManagedReference:

    GroupProduct 一切正常,但是

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

  2. 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/

相关文章:

java - 公开一个以对象作为参数的方法的 Web 服务

java - 将图像设置为 JFrame 的背景

php - 特殊字符和 json_encode

java - Android:应用程序在模拟器上运行,但在我的手机上崩溃

java - 使用 + 运算符分配字符串内存

java - TomCat EE - Hibernate4 & Spring4 : Session Factory ClassNotFoundException: javax. persistence.NamedStoredProcedureQuery

java - 如何在具有多个服务器的同一数据库上使用 Camel JPA 组件?

java - hibernate 给出两行相同的行而不是两行不同的行

javascript - 从 Angular 服务加载 JSON 数据

java - 如何分配时间