[hibernate-dev] Multi-level Fetch Joins
Gail Badner
gbadner at redhat.com
Wed Sep 16 21:37:51 EDT 2015
Is the only JPA-compliant way to do a multi-level fetch join to use entity
graphs?
JPA 2.1 does not support fetch joins using an alias at all. JSR 338,
4.4.5.3 Fetch Joins says,
"It is not permitted to specify an identification variable for the objects
referenced by the right side of the FETCH JOIN clause, and hence references
to the implicitly fetched entities or elements cannot appear elsewhere in
the query. "
(I know that HQL supports using an alias for nested fetch joins. [1][2])
Also in JSR 338, 4.4.5.3 Fetch Joins is:
fetch_join ::= [ LEFT [OUTER] | INNER ] JOIN FETCH
join_association_path_expression
If I understand correctly, the definition of
join_association_path_expression does not allow for join fetching a nested
association using a path, as in:
select c from Cat c join fetch c.father join fetch c.father.mother <= not
supported by JPA or HQL
(There is an open Jira for supporting nested join fetches using HQL:
HHH-8206. [3])
Is there a JPA 2.0-compliant way to do this (without entity graphs)?
Thanks,
Gail
[1]
http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/#queryhql-joins
[2]
https://docs.jboss.org/hibernate/orm/5.0/userGuide/en-US/html_single/#d5e1869
[3] https://hibernate.atlassian.net/browse/HHH-8206
More information about the hibernate-dev
mailing list