org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bagswynikający z chęci pobrania co najmniej dwóch kolekcji z jednej encji. Oczywiście błąd ten dotyczy sytuacji w której korzystamy z java.util.List. Wystarczy w takim razie zmienić naszą kolekcję na java.util.Set i problem zostanie rozwiązany.
Chciwe pobieranie - krótkie wyjaśnienie na czym polega
Chciwe pobieranie (EAGER) polega na wybraniu wszystkich potrzebnych danych od razu. Możemy to zrobić na dwa sposoby:
- dodania do adnotacji @OneToMany, @ManyToMany, itd. fetch=FetchType.EAGER. Trzeba uważać na pobranie zbyt dużej ilości danych. Więcej o tym problemie tutaj. W takiej konfiguracji dostaniemy nasz błąd już podczas deployu aplikacji.
- podczas tworzenia zapytania, określić które wiązania/relacje mają zostać chciwie dobrane poprzez oznaczenie ich jako FETCH. W takiej konfiguracji nasz błąd zostanie odkryty w momencie uruchomienia zapytania.