我有一個應用程序使用ehcache版本:2.9.0,我想不存儲QueryCache誰返回空值。停止Ehcache存儲空值
搜索,我發現這個鏈接: http://www.ehcache.org/documentation/2.8/recipes/cachenull.html
而要實現上述cachenull,發現這個IDEIA: https://gist.github.com/bivas/1196809
我實現了CacheEventListener刪除空對象的關鍵,就像在GitHub的鏈接,但不工作,因爲即使選擇結果爲null,element.getObjectValue()也不會爲NULL。
顯示實現QueryCache的內容:)
1 - 第一選擇,沒有發現pessoaID = 999,因此結果爲NULL
Element: [
key = sql: select pessoa0_.PESSOA as PESSOA1_14_, from schema.PESSOA pessoa0_ where pessoas0_.ID=?; parameters: ; named parameters: {pID=999};
transformer: [email protected],
keyValue=[6119085270048768],
version=1,
hitCount=0,
CreationTime = 1493917302268,
LastAccessTime = 1493917302268 ]
2) - 第二選擇,發現pessoaID = 1
Element: [
key = sql: select pessoa0_.PESSOA as PESSOA1_14_, from schema.PESSOA pessoa0_ where pessoas0_.ID=?; parameters: ; named parameters: {pID=999};
transformer: [email protected],
keyValue=[6119085270048768, 1],
version=1,
hitCount=0,
CreationTime = 1493917304047,
LastAccessTime = 1493917304047 ]
PS:注意'keyValue'。是的ArrayList(在調試鋸,因爲方法getObjectValue()的返回是一個對象),並具有恆定的數字:僅在第一選擇和第二選擇具有6119085270048768 6119085270048768和選擇迴歸:1
如何進行對象值的驗證?換句話說,如何禁用ehcache來存儲空值?
弗拉德,還有anothers系統寫入我的數據庫,所以在某一時刻選擇無法找到任何東西(返回NULL),但經過一段時間旁邊的寄存器插入。如果不執行:evictQueryRegion(「my_region_query_cache」),select永遠不會返回正確的。 –
在這種情況下,您需要使用到期時間 –
這看起來不像過期時間。 –