2016-12-15 12 views
0

すべてのモデル関係(1:mまたは1:1)フェッチタイプがレイジーとして定義されているプロジェクトがあります。 ここでは、aという名前のモデルがあり、bとcの3つの関係を持ち、すべてが1:mであるとします。 サービス- サービス-B サービス-C他のbは、cはプロキシモデルが含まれていますが、サービスリターンのモデルMは、その関係を取り込まなければならない場合休止状態でレイジーローディングを使用しているときに、必要に応じて関連が必要

: は、今私は3つのサービスがあります。 Service-BがモデルMを返す場合、他のa、cにはプロキシモデルが含まれていますが、その関係bにはデータを入力する必要があります。 Service-Cと同じ

これを達成する方法を知っている人はいますか?

サービスとユーザーが1つだけ存在する場合の別のシナリオでは、関係aまたはbまたはcをロードするパラメータとしてパラメータを指定します。

+1

JPA 2.1で導入されたEntity Graphの機能(Hibernateのバージョン4.3+だと思います)を使って見ることができます。詳細はこちらをご覧ください。 http://www.thoughts-on-java.org/jpa-21-entity-graph-part-1-named-entity/ –

+0

私が待っていた答えが良いことに感謝しています。 –

答えて

1

最も簡単な方法は、彼らに内部取引を移入することです:SERVICEA entity.getCollectionB().size()

ServiceB entity.getCollectionC().size()

は、他の方法を参照してください: http://www.thoughts-on-java.org/5-ways-to-initialize-lazy-relations-and-when-to-use-them/

EDIT:1つのリレーションに1の遅延ロードをエンティティグラフでも動作しません。バイトコードの有無にかかわらず、バイトコードのインスツルメンテーションが必要になります。読取り列の最適化は、行読取りの最適化ほど重要ではありません。 See:http://www.thoughts-on-java.org/jpa-21-entity-graph-part-1-named-entity/#comment-219

+0

サイズは1対1の関係では機能しません... –

+0

アラン・ハエは私に最高の解決策を与えます。 –

+0

これは[n + 1]休止状態の問題も作成しました。 –

関連する問題