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
zB
s, 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.
A
jestB
relacja jest oznaczona jakoFetchType.LAZY
i jest opcjonalny.B
zwią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ę toA
s 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ówC
tabela jest pobrana.
Jak mogę wstępnie pobrać wszystkoC
s i wszystkoB
s i wszystkoC
s, które są „osiągalne” z danegoA
? Nie widzę sposobu, by to zrobić.