Я думаю, как избежать StackOverflow в моем запросе.Мне нужны двунаправленные отношения, потому что однажды я попрошу Happening
, чтобы получить Place
этого, и наоборот, я попрошу Place
, чтобы получить Happenings
.Но теперь, когда я запрашиваю Happening
, это вызывает переполнение стека, поскольку Place
содержит Set
из Happenings
.Что я делаю не так?
public class Happening {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToOne
private Place place;
}
public class Place {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(mappedBy = "place")
private Set<Happening> happenings;
}
Использование репозитория JPA Я запрашиваю
public Happening getHappening(Long id) {
return happeningRepository.findById(id).get();
}
Ошибка
Could not write JSON: Infinite recursion (StackOverflowError); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: com.proj.happening.Models.Happening["place"]->com.proj.happening.Models.Place
РЕДАКТИРОВАТЬ
Я пытаюсь использовать решения отсюда: [https://www.baeldung.com/jackson-bidirectional-relationships-and-infinite-recursion][1], но хорошо, у меня нет рекурсии, когда я вызываю Happening, потому что я потерял Set<Happening> happenings;
данные, но когда я хочупозвоните с другой стороны и получите место, которое я тоже потерял Set<Happening> happenings;
.Это не решение, которое я ищу.