Wpis z mikrobloga

Mirki, mam problem
Mam bazę danych, w której mam tabele z kategoriami, która zawiera lista produktów. I teraz chciałem się w programie odwołać do tej listy produktów, ale wyrzuca mi wyjątek.
Spojrzałem na metodę, w której wydobywam listę kategorii i tak jak na zdjęciu przed zamknięciem połączenia z bazą danych mogę wydobyć z kategorii listę obiektów, natomiast po zamknięciu połączenia wyrzuca wyjątek.
Da radę jakoś temu zaradzić?

#naukaprogramowania #java #javapomoc
Protonik13 - Mirki, mam problem
Mam bazę danych, w której mam tabele z kategoriami, ...

źródło: comment_Mce1v9eUk7S39c74J9T17BDMeeIUljvv.jpg

Pobierz
  • 6
  • Odpowiedz
@Protonik13: pewnie produkty są wyciągane dopiero w momencie kiedy ich potrzebujesz(FetchType.LAZY). A błąd który dostajesz to LazyInitializationException? ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@Protonik13: Łoo Panie to temat rzeka. Tak jak kolga @kto3 pisze. Masz pełno opcji:
1) FetchType.LAZY - ale nie polecam jak tylko w tym przypadku chcesz pobrać te produkty
2) Użyć JOIN FETCH w query
3) Pobrać listę wcześniej:
List products = categoryList.get(0).getProducts();
  • Odpowiedz
@Protonik13: Tak w skrócie: powodem tego błędu jest to, że JPA robi tylko to co musi (jest leniwe). Czyli pobiera listę kategorii i nie pobiera od razu całej listy produktów (bo na razie ich nie potrzebujesz) - poprawia to wydajność. Gdy już zamkniesz połączenie to JPA nie wie skąd i co ma pobrać.
  • Odpowiedz