使用 Jackson 和 Spring Boot 实体 JPA 中的循环引用

Fel*_*oli 2 java serialization json jackson spring-boot

我有两个网络服务:“Proprietario”和“Veiculo”,“Proprietario”包含“Veiculo”列表,“Veiculo”包含“Proprietario”。

问题是,当我发出调用“Proprietario”的 findAll 方法的请求时,在尝试序列化时,Jackson 进入无限循环并抛出异常。当我尝试调用“Veicolo”的 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;
}
Run Code Online (Sandbox Code Playgroud)

Sel*_*m M 6

尝试使用这两个注释 @JsonManagedReference and @JsonBackReference

请参阅http://www.baeldung.com/jackson-bidirection-relationships-and-infinite-recursion