我正在使用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
}