Как обновить / удалить элемент, уже кэшированный в коллекции элементов

Я работаю с Spring и 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"

Возможно ли это сделать? Как?

Заранее спасибо.

Ответы на вопрос(3)

Ваш ответ на вопрос