私はそのようなことをする必要があります:
構造は次のとおりです。
X には Y のリストが含まれます。Y には Z のリストが含まれるか含まれません。
Xroot.fetch("Y", JoinType.INNER);
Xroot.fetch("Y.Z", JoinType.LEFT);
しかし、JPA では最後の行が機能しません。それを行う方法はありますか?
子の内部を取得する必要があります。
Fetch<X,Y> yFetch = xRoot.fetch("Y", JoinType.INNER);
yFetch.fetch("Z", JoinType.LEFT);
もちろん、流動的に入力することもできます
xRoot.fetch("Y", JoinType.INNER).fetch("Z", JoinType.LEFT);
http://docs.oracle.com/javaee/6/api/javax/persistence/criteria/Fetch.htmlを参照してください。
JPA 2.0 仕様では複数レベルのフェッチをサポートする必要がないため、ベンダーに依存しないソリューションはありません。
この仕様の実装では、複数レベルのフェッチ結合をサポートする必要はありません。マルチレベルのフェッチ結合を使用するアプリケーションは移植できません。
ドキュメントによると、Hibernate は少なくとも HQL クエリで複数レベルのフェッチをサポートしています。EclipseLink ではeclipselink.left-join-fetchクエリ ヒントを使用できます。