JPQL can handle
LEFT OUTER JOIN (may be abbreviated to
LEFT JOIN) and
INNER JOIN (may be abbreviated to
JOIN or to
IN() <- don't use AS for the alias of "right hand side" here in combination with hibernate). The following document describes the different types of joins: visual explanation of sql joins.
The definition can be used analogously for JPQL joins. Fetch joins enable to retrieve lazy associations in an outer join within the “host query”. So there is only one query instead of
2 for subselect fetching or even
n+1 for select fetching. Unfortunately these fetch joins cannot be used in combination with an alias and they cannot be referenced in the
ORDER BY clause.