私の grails アプリケーションでは、数千のレコードを更新するストアド プロシージャを呼び出しています。stored-proc 呼び出しの後、これらのレコードの多くを json 形式で UI に送り返す必要があります。ただし、ストアド プロシージャが完了した後も、休止状態は引き続き古いオブジェクトを参照します。これらのオブジェクトのそれぞれで evict() を試し、HQL を使用して再度ロードしましたが、役に立ちませんでした。
この問題から抜け出す最善の方法は何ですか。
私の grails アプリケーションでは、数千のレコードを更新するストアド プロシージャを呼び出しています。stored-proc 呼び出しの後、これらのレコードの多くを json 形式で UI に送り返す必要があります。ただし、ストアド プロシージャが完了した後も、休止状態は引き続き古いオブジェクトを参照します。これらのオブジェクトのそれぞれで evict() を試し、HQL を使用して再度ロードしましたが、役に立ちませんでした。
この問題から抜け出す最善の方法は何ですか。
答えは質問にあります。:) を使用しrefresh()
ます。これを参照してください。
ハイバネート セッションを完全にクリアしたい場合は、 を使用できますsession.clear()
。clearを参照してください。そのためには、現在のセッションを取得する必要があります。これは、次の 2 つの方法で行います。
を手sessionFactory
に入れ、現在のセッションを取得し、同じものをクリアします。
grailsApplication.mainContext.sessionFactory.currentSession.clear()
withSession
閉鎖 を使用してください。
DomainABC.withSession{s-> s.clear()}