0
我有一个阅读大多数应用程序,所以大多数查询使用Hibernate的第二级查询缓存。我有一个必须每一个页面加载时间执行一个查询,所以我调用它从布局GSP是这样的:Grails查询缓存被忽略
${Book.countByApproved(true, [cache: true])}
我已经启用了Book
类2级高速缓存,加入
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'
}
由dataSource
块添加logSql=true
配置在我已经启用查询日志记录此相同的文件。
每次加载页面时,Book.countByApproved(true)
查询都会被记录下来,所以我认为这意味着结果没有从查询缓存中检索出来?我在本地运行所有东西,所以不可能因为缓存的查询结果已经过期而错过缓存。
我不知道这是否相关,但我使用的是Hibernate Filters plugin并为Book
类配置了默认过滤器。也许有使用hibernate过滤器和查询缓存的问题?
我想到GSP中的查询可能不会被缓存,所以我尝试将它移入控制器(暂时),但它似乎仍然没有使用缓存。你有这个其他问题的链接? – 2013-05-14 13:06:56
http://stackoverflow.com/questions/16441392/grails-not-using-query-cache-in-view – 2013-05-14 13:28:58