0

我有一个以读取为主的应用程序,因此大多数查询都使用 Hibernate 2nd-level 查询缓存。我有一个每次加载页面时都必须执行的查询,所以我从布局 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 插件并为Book该类配置了默认过滤器。使用休眠过滤器和查询缓存可能存在一些问题?

4

1 回答 1

2

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

于 2013-05-14T12:16:20.930 回答