* Kolekcje ToMany są domyślnie leniwe w Hibernate i JPA. Błąd polega na tym, że Jackson próbuje serializować OneToMany, gdy menedżer encji (aka sesja w mowie hibernacji) jest zamknięty. Dlatego nie można pobrać leniwych kolekcji.
Spring Boot z JPA domyślnie zapewnia OpenEntityManagerInViewFilter
dla podstawowego EM. Pozwala to na dostęp do bazy danych tylko do odczytu, ale domyślnie działa tylko dla podstawowego EM.
Masz 3 opcje:
1) Możesz dodać pobranie sprzężenia, np. Jak działa tryb FetchMode w Spring Data JPA
2) Możesz dodać OpenEntityManagerInViewFilter dla niepodstawowego menedżera encji i dodać go do swojego kontekstu.
Pamiętaj, że oznacza to wyzwanie, ponieważ dla każdej instancji Bar i Foo Twoja aplikacja wróci do bazy danych, aby pobrać OneToMany. To jest część, która nie działa dla Bara, ale jest dla Foo. To implikuje problem skalowalności (nazywany przez niektórych problemem N+1), ponieważ dla każdego foo i baru uruchamiasz dodatkowe zapytanie, które będzie zwalniać dla nietrywialnych ilości Foos i Bars.
3) Alternatywą jest sprawienie, by Twoja kolekcja na Bar i Foo była chętna (zobacz ten https://docs.oracle.com/javaee/7/api/javax/persistence/OneToMany.html#fetch-- ), ale należy to dokładnie przeanalizować, jeśli skalowalność jest dla Ciebie w ogóle problemem.
Polecam opcję nr 1.