私はカスタムFlashScope実装でバニラSpring MVCを使用しています。基本的にはPost-Redirect-Getパターンに従います。マージ後のHibernateレイジーロードエラー
私は奇妙な状況に遭遇しました。私のポストでは、ユーザが入力したパラメータを検索し、それらのインスタンスをFlashScopeに設定します。私はそれらの作品がうまく動作して参照してください。 FlashScopeの上に私が置いたオブジェクトで
私はしかし、私はそうのようなコレクションにアクセスしようとすると、遅延ロードされたコレクションを持っている:
ERROR org.hibernate.LazyInitializationException IP127.0.0.1 CV#4c44559c-c576-4732 P#75004 - could not initialize proxy - no Session
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:167)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:215)
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
at core.model.entities.WorkflowState_$$_javassist_36.getFunctions(WorkflowState_$$_javassist_36.java)
:
entity.getLazyLoadedCollection();
私は、次のスタックトレースを受け取ります奇妙なことは、上の呼び出しの直前です。サービスレイヤのセッションにそれをマージします。
getSession().merge(entity);
私は新しいセッションで働いていることがわかっている場合は、私が更新を呼び出す必要がありますが、
JavaDocsは私がマージ呼び出す必要がありますようにそれが見えるようにの
私は次のことをやった回避策として:
if (getSession().contains(entity)) {
getHibernateTemplate().merge(person);
} else {
getSession.update(entity);
}
ここで何をしていますか?
私はそれがセッションに関連付けられなってきていないについて、最後のビット上gleened:ここでは2つの基本的な方法があります。ガードは適切であるか、それとも完全に別のものでなければならないのでしょうか? – Scott
私はそこに大きな答えがあるのか分かりません。あなたが見つけた違い以外 - オブジェクトをセッションに関連付けるかどうか - update()とmerge()はほぼ同じことを成し遂げます。おそらく、システムに意味的にどのように適しているのかという問題だと思います。 –