Grails查询缓存被忽略

时间:2013-05-14 09:04:05

标签: hibernate grails gorm

我有一个主要是读取的应用程序,因此大多数查询都使用Hibernate二级查询缓存。我有一个查询必须在每次页面加载时执行,所以我从布局GSP中调用它,如下所示:

${Book.countByApproved(true, [cache: true])}

我已通过添加

Book类启用了第二级缓存
static mapping = {
    cache true
}

Book.groovy。我还在DataSource.groovy

中配置了以下内容
hibernate {
  cache.use_second_level_cache = true
  cache.use_query_cache = true
  cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}

在同一个文件中,我通过在logSql=true块中添加dataSource来启用查询记录。

每次加载页面时,都会记录Book.countByApproved(true)查询,因此我认为这意味着未从查询缓存中检索结果?我在本地运行所有内容,因此缓存查询结果已过期,因此不可能丢失缓存。

我不知道这是否相关,但我正在使用Hibernate Filters plugin,并为Book类配置了默认过滤器。使用hibernate过滤器和查询缓存可能存在一些问题吗?

1 个答案:

答案 0 :(得分:2)

如果我没弄错的话。有一个问题与你的问题完全相同,建议不要在GSP中使用查询。在过滤器中尝试这个,看看缓存是否有效。