Установить против списка в REST один ко многим - PullRequest
0 голосов
/ 02 октября 2018

У меня отношения один ко многим.Если в классе Customer я напишу список:

private List<Orders> order;

, мой GetMapping будет работать нормально.Но я хочу использовать лучшие практики и пишу Set вместо List:

private Set<Orders> order;

В результате у меня появляется ошибка:

Could not write JSON: Infinite recursion (StackOverflowError); nested
exception is com.fasterxml.jackson.databind.JsonMappingException: 
Infinite recursion (StackOverflowError)

Почему у меня эта ошибка?Что не так с Set?

Мои сущности:

@Entity
public class Customer {
    @Id
    @GeneratedValue
    private int id;
    private String firstName;
    private String lastName;

    @OneToMany(cascade=ALL, mappedBy="customer", orphanRemoval=true)
    private Set<Orders> order;
    //private List<Orders> order;
}

@Entity
public class Orders {
    @Id
    @GeneratedValue
    private int id;

    @JsonIgnore
    @ManyToOne
    @JoinColumn(name="customer_id", nullable=false)
    private Customer customer;
}

И GetMapping:

@GetMapping("/customer/{id}")
public ResponseEntity get(@PathVariable Long id) {
    Optional<Customer> customer = customerRepository.findById(id);
    return new ResponseEntity<>(new ResponseObject(customer));
}

UPD.Я вижу вопрос Бесконечная рекурсия с Джексоном JSON и выпуском Hibernate JPA .Но это другой вопрос.Я говорю о разнице в использовании List и Set.Я не интересуюсь @JsonIgnore и не спрашиваю об этом (и я использую это в своем коде).Я хочу понять, почему у меня возникает ошибка, когда я использую Set, и у меня нет ошибки с List

...