Как избежать StackOverflow при двунаправленных отношениях в hibernate / jpa? - PullRequest
0 голосов
/ 22 октября 2018

Я думаю, как избежать 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[&quot;place&quot;]-&gt;com.proj.happening.Models.Place

РЕДАКТИРОВАТЬ

Я пытаюсь использовать решения отсюда: [https://www.baeldung.com/jackson-bidirectional-relationships-and-infinite-recursion][1], но хорошо, у меня нет рекурсии, когда я вызываю Happening, потому что я потерял Set<Happening> happenings; данные, но когда я хочупозвоните с другой стороны и получите место, которое я тоже потерял Set<Happening> happenings;.Это не решение, которое я ищу.

...