[英]Grails query cache is ignored
我有一个主要是读取的应用程序,因此大多数查询都使用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'
}
在同一个文件中,我通过在dataSource
块中添加logSql=true
来启用查询日志记录。
每次加载页面时, Book.countByApproved(true)
记录Book.countByApproved(true)
查询,因此我认为这意味着未从查询缓存中检索结果? 我在本地运行所有内容,因此缓存查询结果已过期,因此不可能丢失缓存。
我不知道这是否相关,但我正在使用Hibernate Filters插件并为Book
类配置了默认过滤器。 使用hibernate过滤器和查询缓存可能存在一些问题?
如果我没错的话。 有一个问题与你的问题完全相同,建议不要在GSP中使用查询。 在过滤器中尝试此操作,查看缓存是否有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.