GrailsとHibernateの遅延初期化例外
-
21-09-2019 - |
質問
どこに原因が何であったか、あなたはそれを解決しましたか?あなたはGrailsの中org.hibernate.LazyInitializationException
得ている最も一般的な場所は、ある
私はこの1つの例外は、初心者のために多くのことをアップしますので、あなたがより多くの例を提供したいならば、それは素晴らしいことだと思います。
解決
の例を取ることができます:
class Book {
String title
Author author
}
class Author {
...
}
Book book = Book.get(1)
私たちが知っているように、、デフォルトのフェッチモードでは、ドメインクラスで怠惰です。 、上記の例を考えると、私たちは本のオブジェクトを取得すると言う、その後Bookオブジェクトは、自動的に最初のレベルのキャッシュすなわちHibernateのSessionオブジェクトに添付されます。そして、ドメインオブジェクトの後にセッションオブジェクトからデタッチし、我々はbook.authorをフェッチしようとすると、この時点でそれは遅延初期化の例外が発生します。
だから、解決策はどちらか持って下記のコードを使用してセッションを休止状態にするためにあなたの本のオブジェクトを添付するように熱心かのモードを取得するために、次のとおりです。
if(!book.isAttached()){
book.attach()
}
上記の説明は、シナリオの一つです。より多くのがあるかもしれません。私はシェアを喜ばせるために他人を要求ます。
他のヒント
ユーザーがトランザクションではなかったサービスにJSecurity /四郎といくつかのアクションを実行する権限を持っていた場合、私がチェックしていたので、
私は1つを得ました。最後に、私はちょうどトランザクションが例外を取り除くためにのようなサービスを設定する必要がありました。
ここで所属していません StackOverflow