我正在使用Spring缓存,并试图通过key(id)列表退出缓存。

@CacheEvict(value="cacheName",key=?, condition=? )
public void deleteByIds(List<Integer> ids){...}


我该怎么做呢?

最佳答案

@CacheEvict



  指示方法(或类中的所有方法)的注释
  触发缓存逐出操作。



cachaName或值



  存储方法调用结果的缓存的名称。



健康)状况



  用于使方法缓存成为条件的表达式。







  root.method,root.target和root.caches分别用于引用方法,目标对象和受影响的缓存。


解决问题的方法:
假设将列表中的每个对象都缓存到其中,例如cacheName =“ entities”,并且对于键,您可以使用实体ID(这是Integer值的String表示形式),您应该编写第二种方法来退出缓存。

public void deleteByIds(List<Intiger> intigers){
 for(Intigier i : intigers){
  deleteEntity(i.toString());
 }
}

@CacheEvict(cacheName = "entities", key="entityId", condition="entityId!=null")
private void deleteEntity(String entityId){
 //processing : for ex delete from the database and also remove from cache
}

09-26 14:29