1

防止何らセッションがJPAのレポメソッドを渡す場合には失敗していない以下の場合にはJPAリポジトリを使用して<strong>なしセッション</strong>の失敗を防止するための方法は何

は私がにfetch = FetchType.LAZYと関係@OneToManyでXというクラスを持っていますクラスYに戻ります。私はrepostioryでメソッド全体を作成し、Serviceクラスに渡します。その後、Controllerに渡します。

私はLazy fetchTypeを経由して関連しているx.getY()ことにより、クラスXからオブジェクトYを取得したい一方で、私は(休止状態から)エラーを取得するには、何のセッションと呼ばれていません。

このエラーが発生しないようにするにはどうすればよいですか?

答えて

1

@Transactionalメソッド内でx.getY()コールを囲むか、コールの階層内でトランザクション境界を上位に移動して呼び出しを含める必要があります。

あなたが例えばコントローラで初めてそのプロパティにアクセスした場合、他の可能なオプションは、になりますので、私はサービスよりも高い移動しないと一般的に

  • 熱心にすべての必要な依存関係にしばらくフェッチセッションはまだ(フェッチ参加)
  • 使用彼らにx.getY().sizeをinitialzeするdepenedentのcolletions上Hibernate.initialize(x.getY());
  • トランザクションコンテキストの内部コール size方法を開いています。
+0

私は '@ Transactional'を使う傾向がありますが、私が正しいかどうか教えてください - ' import org.springframework.transaction.annotation.Transactional; 'を使う必要がありますか? – bielas

+0

あります。ただし、追加のconfig(パッケージのスキャンとトランザクション管理)を使用する必要があることを覚えておく必要があります。 http://www.baeldung.com/transaction-configuration-with-jpa-and-springをチェックしてください。 –

+0

私はスプリングブートを使用していますか? – bielas

関連する問題