Grails:在外部加载数据后更新hibernate

时间:2012-03-21 19:46:07

标签: database hibernate grails

我有一个grails应用程序。我想将数据加载到底层数据库中,特别是使用grails,perl外部的东西。我知道在外部数据加载后我必须更新hibernate序列,否则在grails中的下一个create对象中,hibernate会抛出异常;但还有什么我需要更新的吗?例如,我是否必须清除hibernate缓存?这似乎是一个非常普遍的问题,但是在grails文档中没有对它进行过讨论。感谢。

1 个答案:

答案 0 :(得分:0)

找到了这个 http://grails.1312388.n4.nabble.com/Accessing-the-2nd-level-cache-to-allow-it-to-be-cleared-via-a-controller-or-service-td1390985.html

Hibernate有这方面的API。您可以通过sessionFactory.getQueryCache()获取查询缓存并使用

清除它
   sessionFactory.queryCache.clear() 

您可以使用其完整的类名访问域类的缓存,例如:

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

并通过

清除它
   sessionFactory.getSecondLevelCacheRegion('com.foo.bar.Book').clear() 

你也可以在sessionFactory上为整个类调用evict()

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

或单个实例

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