Весна POST отношения Йосн не работает - PullRequest
0 голосов
/ 16 февраля 2020

Я пытаюсь опубликовать объект, связанный с сервером. но я получаю ошибку.

моя сущность:

@Entity
public class District implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(unique = true)
private String name;

@ManyToOne(fetch = FetchType.LAZY)
@JsonBackReference
@JsonUnwrapped
private City city;

@JsonManagedReference
@JsonIgnoreProperties
@OneToMany(mappedBy = "district", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set<Region> regions = new HashSet<>();

@JsonIgnoreProperties
@OneToMany(mappedBy = "district", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set<Drugstore> drugstores = new HashSet<>();

//getter and setters

вот мой контроллер:

@PostMapping("/admin/district")
ResponseEntity<?> create(@RequestBody District request) {
    service.create(request);
    return null;
}

вот моя ошибка:

enter image description here

если отправить ноль json, получите эту ошибку еще раз. любое тело может помочь?

1 Ответ

1 голос
/ 16 февраля 2020

после нескольких попыток я нашел решение.

Если использовать @JsonBackReference в проекте более двух раз, следует различать guish их с указанным c Ссылочным именем.

так что я делаю так:

@ManyToOne(fetch = FetchType.LAZY)
@JsonBackReference("district-city")
private City city;

@JsonManagedReference("district-region")
@JsonIgnoreProperties
@OneToMany(mappedBy = "district", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set<Region> regions = new HashSet<>();

@JsonIgnoreProperties
@JsonManagedReference("district-drugstore")
@OneToMany(mappedBy = "district", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set<Drugstore> drugstores = new HashSet<>();

и решение решено.

надеюсь помочь кому-нибудь ...

...