带有 Jackson 和 Spring Boot 的实体 JPA 中的循环引用
Posted
技术标签:
【中文标题】带有 Jackson 和 Spring Boot 的实体 JPA 中的循环引用【英文标题】:Circular reference in entity JPA with Jackson and Spring Boot 【发布时间】:2018-09-16 11:31:03 【问题描述】:我有两个网络服务:“Proprietario”和“Veiculo”,“Proprietario”包含“Veiculo”列表,“Veiculo”包含“Proprietario”。
问题是,当我发出调用“Proprietario”的 findAll 方法的请求时,在尝试序列化时,Jackson 进入无限循环抛出异常。当我尝试调用“Veiculo”的 findAll 方法时也会发生同样的情况。
当我打电话给你调用“Veiculo”的findAll时,我希望它带有“Proprietario”,但不要将“Veiculo”列表带到“Proprietario”内。与调用“Proprietario”的findAll方法相反,我想将“Veiculo”列表带入,但不要将“Proprietario”带入“Veiculo”。
我尝试使用一些 Jackson 注释,但没有一个可以解决双方的冲突。
@Getter
@Setter
@Entity
@EqualsAndHashCode(of = "id")
public class Veiculo
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Long id;
@Column(length = 10)
private String placa;
@Column(nullable = false)
private Integer ano;
@ManyToOne
@JoinColumn
private Proprietario proprietario;
@Getter
@Setter
@Entity
@EqualsAndHashCode(of = "id")
public class Veiculo
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Long id;
@Column(length = 10)
private String placa;
@Column(nullable = false)
private Integer ano;
@ManyToOne
@JoinColumn
private Proprietario proprietario;
【问题讨论】:
【参考方案1】:尝试使用这两个注解
@JsonManagedReference and @JsonBackReference
见http://www.baeldung.com/jackson-bidirectional-relationships-and-infinite-recursion
【讨论】:
以上是关于带有 Jackson 和 Spring Boot 的实体 JPA 中的循环引用的主要内容,如果未能解决你的问题,请参考以下文章
在 Jackson / Spring Boot 中测试自定义 Json Deserializer
Spring Boot的Jackson JSON映射器[关闭]