Wpis z mikrobloga

Dzień dobry.
Mam pytanie odnośnie #jpa #hibernate #spring i #spring-data
Domyślnie ładowanie relacji jest ustawione na LAZY, co zresztą ma sens. Ja zawsze to zlewałem, ustawiłem sobie FetchType.EAGER i do przodu. No ale generalnie jest to rozwiązanie skrajnie złe, na zasadzie "działa, bo działa".
Teraz chcę to zrobić poprawnie i nie bardzo wiem jak to rozwiązać.

Przy leniwym ładowaniu jak zwróci mi obiekt to zamyka sesję i nara. Teraz pytanie moje, jak w prosty sposób "dociągnąć" tę relację.

#java jeszcze dam.
  • 9
@KotoFan: EAGER jest złą praktyką. Przy pobieraniu jednego obiektu możesz pobrać wszystko co jest EAGER z nim.
Pisząc zapytanie, które robi join z A i B jeśli A jest EAGER z C a C EAGER z D a B EAGER z E to wychodzi Ci zapytanie, które ma kilka joinów mimo to, że chcesz mieć tylko coś z A lub B ...

W Hibernate jest coś takiego jak join fetch, w
@MojPierwszyRaz: W sumie to nawet nie do końca wiem czy to jest możliwe. No ale chciałbym, żeby pobierając na przykład wszystkie faktury móc wejść w twórcę dowolnej faktury i zobaczyć jego imię, tylko nie tak, że pobierze mi 100 tysięcy faktur i dociągnie dla wszystkich autora. Na przykład mam to zrobione dla jednego tak:

@Query("select p from Project p join fetch p.author where p.id = ?1")
Project findById(int id);

No i