¿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 deBs, 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.

AesB la relación está marcada comoFetchType.LAZY y es opcional.Brelació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 queAs 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 queCSe obtiene la mesa.

¿Cómo puedo recoger todosCs y todoBs y todoCs que son "alcanzables" desde un determinadoA? No puedo ver ninguna manera de hacer esto.

Respuestas a la pregunta(3)

Su respuesta a la pregunta