2016-07-26 63 views
1

我有在UserService的方法:的Ehcache與Spring高速緩存分配錯鍵

@Cacheable(value="user", key="#p0") 
public User find(String name) { 
    return userRepository.findOneByName(name); 
} 

並將其緩存。但後來我嘗試從 '用戶' 緩存中的所有鍵:

CacheManager cacheManager = CacheManager.getInstance(); 
cacheManager.getCache("user").getKeys().forEach(o -> log.debug(o.toString())); 

輸出:

com.cache.domain.User#1

相反,例如「 John Doe'。

+1

你有沒有試過@Cacheable(value =「user」,key =「#name」)? – Cid54

+0

是的。它給出了相同的結果。 – Feeco

回答

0

getKeys

的Javadoc返回緩存中的所有元素的列表,無論它們是否過期。

這實際上是返回元素,沒有ID。您可能需要更改代碼以將o轉換爲Element,並輸出getObjectKey()

您無需指定key屬性。既然你想要的是使用方法的單個參數(name),那麼默認情況下,緩存抽象將使用該參數。