I want to cache the response of the repository class which has the following methods:
@Cacheable(cacheNames = "books", key="#id")
Book findById(Long Id);
@CacheEvict(cacheNames = "books", key = "#id")
void deleteById(Long id);
@Cacheable(cacheNames = "books", key="#book.id")
Book save(Book book);
@Cacheable("books")
List<Book> findAll();
Except the findAll() method, others are working as expected.
How to make findAll() to populate the books cache with book.id as key?
You need to provide a customized CacheManager and Cache implementation for your caching provider (e.g. Ehcache, Redis or Hazelcast).
By default, OOTB, Spring's Cache Abstraction does not split up cached method array/collection type return values into separate entries in the targeted cache. You must handle this yourself.
See my last response for this nearly identical question.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With