Jak zrobić „głębokie” dołączenie do JPQL?

Nie sądzę, bym kiedykolwiek w pełni zrozumiał połączenia fetch.

Mam zapytanie, w którym staram się z niecierpliwością „zawyżać” referencje o dwa poziomy.

To jest mojeA ma opcjonalneCollection zBs, i każdyB ma 0 lub 1C. RozmiarB kolekcja jest znana jako mała (10-20 wierzchołków). Chciałbym wstępnie pobrać ten wykres.

AjestB relacja jest oznaczona jakoFetchType.LAZY i jest opcjonalny.Bzwiązek zC jest także opcjonalny iFetchType.LAZY.

Miałem nadzieję, że mogę:

SELECT a 
  FROM A a
  LEFT JOIN FETCH a.bs // look, no alias; JPQL forbids it
  LEFT JOIN a.bs b // "repeated" join necessary since you can't alias fetch joins
  LEFT JOIN FETCH b.c // this doesn't seem to do anything
 WHERE a.id = :id

Kiedy to prowadzę, widzę toAs B kolekcja jest rzeczywiście pobrana (widzęLEFT JOIN w SQL odwołując się do tabeli, do którejB jest mapowany).

Nie widzę jednak takich dowodówCtabela jest pobrana.

Jak mogę wstępnie pobrać wszystkoCs i wszystkoBs i wszystkoCs, które są „osiągalne” z danegoA? Nie widzę sposobu, by to zrobić.

questionAnswers(3)

yourAnswerToTheQuestion