在Spring Boot控制器中反序列化json时List <object> null

时间:2019-10-31 17:45:21

标签: java spring-boot

我在Spring Boot应用程序中的控制器有问题。当我在控制器上进行调用(URI /调用)时,对象列表始终为空。

{
    "code": "TEST",
    "name": "TEST NAME",
    "groupe": "A1",
    "list": [
        {"type":"web", "link":"https://google.com/"},
        {"type":"web", "link":"https://google2.com/"}
    ]
}
@PostMapping(value="/call")
    public ResponseEntity<Void> ajouterEnvironnement(@RequestBody First first) {
        first.getCode() // value : "TEST"
        first.getList() // value : null
}
public class First {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String code;
    private String name;
    private String groupe;
    @OneToMany(mappedBy = "first", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    private List<Second> list;
}
public class Second {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String type;
    private String link;
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "first_id", nullable = false)
    private First first;
}

1 个答案:

答案 0 :(得分:0)

通过写这个问题,我找到了解决方案,所以我分享了它:

使用@JsonManagedReference@JsonBackReference批注。

More information here

public class First {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String code;
    private String name;
    private String groupe;
    @OneToMany(mappedBy = "first", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JsonManagedReference
    private List<Second> listLiens;
}
public class Second {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String type;
    private String link;
    @ManyToOne(fetch = FetchType.EAGER)
    @JsonBackReference
    @JoinColumn(name = "first_id", nullable = false)
    private First first;
}