2014-08-29 85 views
1

我使用Spring 3.2緩存抽象使用ehcache作爲實現。Ehcache:從緩存中刪除條目存儲爲列表

我能夠緩存返回對象列表的方法的輸出,如下所示。

public Class Employee 
    { 
     private int empId; 
     private String name; 

     //getters and setters 
} 

@Cacheable(value = "empCache") 
public List<Employee> getAllEmployess() { 

     //method queries the db and returns a list of all employees 

} 

,但我無法刪除從更新的時間存儲在緩存中的List<Employee>對象的特定條目,或者使用下面

@CacheEvict(value = "empCache", key="#empId") 
public void deleteEmployee(int empId) { 

//deletes employee object  
} 

回答

0

看着春天的Cache abstraction文檔中給出的代碼通過@CacheEvict刪除,您使用@Cacheable定義的內容是緩存中的一個條目,映射到密鑰SimpleKey.EMPTY。情況就是這樣,因爲你的方法沒有參數。 但那麼您的@CacheEvict被定義爲在密鑰empId上工作。所以你在兩個操作之間不匹配。但是,除了這種不匹配之外,我不相信你想要做的是Spring的Cache抽象支持。 當你考慮它時,你需要告訴Spring如何根據其empId識別列表中的員工。