2013-04-08 5 views
8

JPAを使用してサーバーからオブジェクトをデータベースに照会し、オブジェクトをWebサービス経由でクライアントに送信するシナリオはほとんどありません。
このようなシナリオでは、クライアントは完全なグラフを期待しているので、負荷のかかる遅延コレクションをオーバーライドし、バッチロード(パフォーマンス用)を要求することができます。 JPA(またはEclipseLink)では、問合せを再書込みせずに一般的な方法で問合せをオーバーライドし、完全なグラフをリクエストできますか?JPAクエリーを強制的にすべてのコレクション/フィールドに返すようにする

答えて

9

10.1.3。結合をフェッチする

JPQLクエリは、返されたインスタンスのどのフィールドをプリフェッチするかをクエリで指定できる1つ以上の結合フェッチ宣言を指定できます。
SELECT x FROM Magazine x join fetch x.articles WHERE x.title = 'JDJ'
上記のクエリはMagazineのインスタンスを返し、articlesフィールドは返されたインスタンスで既に取得されることを保証します。
複数のフィールドは別々のフェッチ参加宣言で指定することができる:マガジンXから
SELECT xがフェッチx.articlesがx.authorsをフェッチ参加する参加WHERE x.title = 'JDJ'

出典:http://docs.oracle.com/cd/E13189_01/kodo/docs40/full/html/ejb3_overview_query.html#ejb3_overview_join_fetch

関連する問題