我與春的Ehcache如何更新/刪除項目的項目集合
工作中已經被緩存我有以下方法
@Override
@Cacheable(value="products", key="#root.target.PRODUCTS")
public Set<Product> findAll() {
return new LinkedHashSet<>(this.productRepository.findAll());
}
我有@Cacheable和@CachePut工作的其他方法和@CacheEvict。
現在,想象中的數據庫返回100個產品,且它們通過key="#root.target.PRODUCTS"
緩存,那麼其他方法將插入 - 更新 - 刪除一個項目到數據庫中。因此,通過key="#root.target.PRODUCTS"
緩存的產品不再像數據庫那樣相同。
我的意思是,檢查兩個以下兩種方法,他們能夠更新/刪除項目,而同一項目在其他key="#root.target.PRODUCTS"
@Override
@CachePut(value="products", key="#product.id")
public Product update(Product product) {
return this.productRepository.save(product);
}
@Override
@CacheEvict(value="products", key="#id")
public void delete(Integer id) {
this.productRepository.delete(id);
}
我想知道是否有可能被緩存通過key="#root.target.PRODUCTS"
更新/刪除位於緩存中的項目,如果產品已刪除,它將爲100,產品已更新或499。
我想說的是,我要避免以下:
@Override
@CachePut(value="products", key="#product.id")
@CacheEvict(value="products", key="#root.target.PRODUCTS")
public Product update(Product product) {
return this.productRepository.save(product);
}
@Override
@Caching(evict={
@CacheEvict(value="products", key="#id"),
@CacheEvict(value="products", key="#root.target.PRODUCTS")
})
public void delete(Integer id) {
this.productRepository.delete(id);
}
我不想再次調用500級或499的產品被緩存到key="#root.target.PRODUCTS"
有可能做到這一點?怎麼樣?
在此先感謝。
謝謝Stephane,我要通過JIRA保持對話。 –