java - 名称为 'defaultReference' 的多个反向引用属性

标签 java json spring jackson

我在一个类中有多个反向引用类。由于我为它们使用 @JsonBackReference ,因此出现错误。我为这些类分配了 @JsonIdentityInfo 注释,但仍然遇到相同的错误。

public class X implements Serializable {
  ....
  //bi-directional many-to-one association to Booking
  @ManyToOne(fetch = FetchType.EAGER)
  @JoinColumn(name = "xxA", nullable = false)
  @JsonBackReference
  private A a;

  //bi-directional many-to-one association to Client
  @ManyToOne(fetch = FetchType.EAGER)
  @JoinColumn(name = "xxB", nullable = false)
  @JsonBackReference
  private B b;
  ...getters setters
}

@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "@id")
public class B implements Serializable {
  ........ 
  //bi-directional many-to-one association to BookedClient
  @OneToMany(mappedBy = "b", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
  @JsonManagedReference
  private List < X > xxB;
  ........ getters setters
}


@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "@id")
public class A implements Serializable {
  ........
  //bi-directional many-to-one association to BookedClient
  @OneToMany(mappedBy = "a", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
  @JsonManagedReference
  private List < X > xxA;
  ........ getters setters
}

错误:

com.fasterxml.jackson.databind.JsonMappingException: Multiple back-reference properties with name 'defaultReference'

如何解决此错误?我不能在类中使用多个反向引用吗?

最佳答案

根据Jackson's javadoc@JsonManagedReference@JsonBackReference 都接受将它们绑定(bind)在一起的名称值:

  @JsonBackReference("a")
  private A a;

  @JsonManagedReference("a")
  private List < X > xxA;

关于java - 名称为 'defaultReference' 的多个反向引用属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43202883/

相关文章:

java - Maven 插件自动生成 setters/getters?

java - 如何组合两个 Collections.sort 函数

javascript - 在 C3 (D3) 中显示 JSON 格式

Python:将对象序列化为json

java - GC时间戳 未打印

java - 使用 Java 连接到 Amazon RDS 实例时如何解决 ORA-12514

javascript - 解析json数组流

java - JMS TextMessage、JMS_BEA_SELECT 消息选择器、事务处理 session 和确认模式

spring - "@Transactional"应该放在哪里服务层或者DAO

java - Multi-Tenancy 应用程序 Java Spring Hibernate Mysql OAuth2 Spring Security