如何从findAll方法的缓存中删除特定对象?

时间:2017-10-19 15:02:17

标签: spring caching spring-data ehcache

我找到了一个方法,它返回DB中的所有对象并缓存它。 但是当我更新一些对象时,我想在缓存中更新该元素。 但是在findAll上我不知道如何用键映射:

 @Cacheable("findAllStudens")
 public Collection<StudensImpl> findAll()

当我更新学生时,我想更新缓存,但仅限于该元素。 有人有同样的问题吗?

2 个答案:

答案 0 :(得分:0)

您必须在更新方法上使用注释@CachePut,如下所示:

@CachePut(cacheNames = "findAllStudens")
public void update(StudensImpl studensImpl) {
...
}

答案 1 :(得分:0)

您需要在更新方法之前添加@CacheEvict(“findAllStudens”)注释

CacheEvict注释将从现有缓存中删除数据。下次调用findAll()时,方法内的代码将被执行,返回的列表将存储在缓存中