0

以前、* LazyIntialization exception: Proxy not found - Session was closed *の解決策について質問を投稿しました。しかし、コードの後半で、get() メソッドの代わりに load() メソッドを使用してエンティティ オブジェクトを取得していることに気付きました。そのため、load() メソッドを get() に変更すると、機能し始めました。

以下はコードのスニペットです。

Answer answerObj = HibernateTemplate.load(Answer.class,1001); --> line 1

answerObj.setPoints(2990); --> line 2

これを実行すると、LazyInitialization exception:Proxy not found on line 2 がスローされました。

load() メソッドを使用すると、データベースからの永続的な行ではなくプロキシ オブジェクトが返されることを理解しています。したがって、私の Answer オブジェクトには Id 値だけがあり、他のすべてのプロパティは空です。

コードの 2 行目で、プロキシ オブジェクトの (Answer) プロパティの 1 つを何らかの値に設定しようとしました。それでは、なぜプロキシが利用できないという例外をスローしているのでしょうか? プロキシ オブジェクト プロパティに値を代入する際に間違っていることは何ですか?

4

1 に答える 1

0

Hibernate は、プロパティの設定に他のプロパティを含むロジック (検証など) があるかどうかを認識せず、実際のセッターを呼び出す前にデータベースからオブジェクトをロードする唯一の安全なことを行います。

于 2012-08-23T14:21:50.730 に答える