清除特定域类的hibernate缓存

hit*_*ty5 6 grails hibernate

想象一下,我有以下课程:

class Test {
   String name    
   static mapping = {
      cache true
      version false
}
Run Code Online (Sandbox Code Playgroud)

目标是在数据库级别使用本机sql插入行,因此hibernate不会识别这些更改.我怎么能不知道这个新行呢?

有什么像 - > Test.clearCache?

Gil*_*Gil 8

这个答案是有点老了......逐出方法已不...你可以使用

sessionFactory.cache.evictEntityRegion(Class.name)
Run Code Online (Sandbox Code Playgroud)

这对我有用...只是谷歌上课,你会发现所有方法......


Vic*_*nko 6

虽然它是一种不赞成使用的方式,但它更短,仍然有效.

def sessionFactory // inject Hibernate sessionFactory
sessionFactory.evict(clazz, id)
// or evict all class instances:
sessionFactory.evict(clazz)
Run Code Online (Sandbox Code Playgroud)

文档在这里,以最新的方式查看它Cache.