2012-03-21 12 views
1

私はgrailsアプリケーションを持っています。私はgrails、perlの外部の何かを使って基礎となるデータベースにデータをロードしたいと思います。私は、外部データの読み込み後にhibernateのシーケンスを更新しなければならないことを知っています。そうでなければ、次のgrailsのオブジェクトを作成し、hibernateは例外をスローします。私は更新する必要がある何か他にありますか?たとえば、休止状態のキャッシュをクリアする必要がありますか?これは非常に一般的な問題のようですが、grails docsにはこれに関する議論はありません。ありがとう。Grails:外部的にデータをロードした後のハイバネーションの更新

答えて

0

は、HibernateはこのためのAPIがあり、この http://grails.1312388.n4.nabble.com/Accessing-the-2nd-level-cache-to-allow-it-to-be-cleared-via-a-controller-or-service-td1390985.html

を発見しました。あなたは、例えば、その完全なクラス名を使用して、ドメインクラスのキャッシュにアクセスすることができます(sessionFactory.getQueryCache経由でクエリキャッシュを取得)し、

sessionFactory.queryCache.clear() 

を使用して、それをクリアすることができますまた、クラス全体

sessionFactory.evict(com.foo.bar.Book) 

または個々のインスタンス

sessionFactory.evict(com.foo.bar.Book, 42) 
ためのSessionFactoryの追い出しを()を呼び出すことができます

def cache = sessionFactory.getSecondLevelCacheRegion('com.foo.bar.Book') 

、クリアそれ

sessionFactory.getSecondLevelCacheRegion('com.foo.bar.Book').clear() 

経由

関連する問題