ich mit Frühling und ehcache arbeiteteWie Aktualisierung/entfernt ein Element bereits innerhalb einer Sammlung von Gegenständen im Cache
Ich habe die folgende Methode
@Override
@Cacheable(value="products", key="#root.target.PRODUCTS")
public Set<Product> findAll() {
return new LinkedHashSet<>(this.productRepository.findAll());
}
Ich habe andere Methoden arbeiten mit @Cacheable und @CachePut und @CacheEvict. Jetzt
, stellen die Datenbank zurückgibt 100 Produkte und sie werden durch key="#root.target.PRODUCTS"
zwischengespeichert, dann andere Methode wäre Einsatz - update - gelöscht ein Element in die Datenbank. Daher sind die Produkte, die durch die key="#root.target.PRODUCTS"
zwischengespeichert werden, nicht mehr dieselben wie die Datenbank.
Ich meine, überprüfen Sie die beiden folgenden zwei Methoden, sie in der Lage sind, ein Element zu aktualisieren/löschen, und dass gleiche Element in der anderen 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);
}
Ich möchte wissen, wenn möglich Aktualisieren/löschen Sie den im Cache befindlichen Artikel über die key="#root.target.PRODUCTS"
, es wäre 100 mit dem Produkt aktualisiert oder 499, wenn das Produkt gelöscht wurde.
Mein Punkt ist, ich möchte vermeiden, die folgenden:
@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);
}
Ich will nicht wieder rufen die 500 oder 499 Produkte in den
key="#root.target.PRODUCTS"
Vielen Dank im Voraus.
Danke Stephane, ich werde das Gespräch durch JIRA halten. –