2017-09-28 4 views
0

J'ai créé deux services qui utilise Spring Cache. Dans la première méthode que je mets tous les documents qui sont faits alors que l'application commence:Mettre à jour l'élément dans le cache, puis appeler à nouveau findAll éléments ne met pas à jour l'élément

@CachePut(value = "items") 
    public Item save(Item item){ 
     System.out.println("----------------- z cachea udated" + item); 
     return itemRepository.saveAndFlush(item); 
    } 

Ainsi, lorsque l'application est en cours d'exécution dans les premiers pas je intégrer mes propres cache. Je reçois tous les records:

@Cacheable(value = "items") 
    public Page<Item> getItems(Pageable pageRequest){ 
     System.out.println("----------------- z cachea PAGEABLE"); 

     Page<Item> all = itemRepository.findAll(pageRequest); 
     System.out.println("----------------- all" + all.getContent()); 
     return all; 
    } 

alors je mettre à jour un seul enregistrement en utilisant la méthode save() et obtenir à nouveau tous les dossiers. Et à ce moment mon cache n'a pas été changé du tout. À l'intérieur du cache il y avait tous les enregistrements qui étaient dans le premier appel de méthode. Comment changer à l'intérieur du cache seulement cet enregistrement qui a été affecté par la mise à jour?

Répondre

0

Essayez de changer @Cacheable(value = "items")-@Cacheable(value="items", key="all")

+0

Ceci est une mauvaise solution varient parce qu'il provoque des erreurs. Je l'ai essayé .. – bielas