我有兩個控制器方法,@Cacheable在Grails中不尊重key =?
@CacheEvict(value="showGearListCache")
def edit(Long id) {
}
和
@Cacheable(value="showGearListCache")
def show(Long id) {
}
顯示緩存正確:它不爲任何ID執行兩次。但是,調用「編輯」不會解析該標識。所以如果我打電話給show - edit - show,show將不會執行第二次。
我認爲問題可能是密鑰是不同的,所以我嘗試添加
@Cacheable(value="showGearListCache", key="#id")
@CacheEvict(value="showGearListCache", key="#id")
這兩種方法,並注意到緩存停止工作完全(不要介意驅逐)。所以,我檢查什麼是高速緩存注入grailsCacheManager進級,並發現它是使用了(一個例子)的關鍵:
GET:/[CONTROLLER]/show/83
當我本來期望它剛剛被「83」。
當然,我可以每次都清除所有條目,但如果我只是使其中一條無效,那麼這似乎本質上是浪費。
當我這樣做時,我得到: 無法在null上找到字段或屬性'id' – Denise