¿Cómo hago una unión de búsqueda "profunda" en JPQL?
No creo que alguna vez entienda completamente las combinaciones de fetch.
Tengo una consulta en la que estoy intentando "inflar" las referencias en dos niveles.
Ese es miA
tiene un opcionalCollection
deB
s, y cada unoB
tiene 0 o 1C
. El tamaño de laB
Se sabe que la colección es pequeña (10-20 tops). Me gustaría recoger previamente este gráfico.
A
esB
la relación está marcada comoFetchType.LAZY
y es opcional.B
relación conC
también es opcional yFetchType.LAZY
.
Esperaba poder hacer:
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
Cuando corro esto, veo queA
s B
la colección es de hecho recuperada (veo unLEFT JOIN
en el SQL haciendo referencia a la tabla a la queB
se asigna).
Sin embargo, no veo tal evidencia queC
Se obtiene la mesa.
¿Cómo puedo recoger todosC
s y todoB
s y todoC
s que son "alcanzables" desde un determinadoA
? No puedo ver ninguna manera de hacer esto.