2013-05-14 79 views
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過濾器和查詢緩存的問題?

回答

2

如果我沒有弄錯。有一個問題完全等於你的問題,建議不要在GSP中使用查詢。在過濾器中試試這個,看看緩存是否工作。

+0

我想到GSP中的查詢可能不會被緩存,所以我嘗試將它移入控制器(暫時),但它似乎仍然沒有使用緩存。你有這個其他問題的鏈接? – 2013-05-14 13:06:56

+1

http://stackoverflow.com/questions/16441392/grails-not-using-query-cache-in-view – 2013-05-14 13:28:58