Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to cache the list of entires based on its primary key using spring caching

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?

like image 552
Sri Avatar asked Dec 31 '25 18:12

Sri


1 Answers

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.

like image 189
John Blum Avatar answered Jan 04 '26 11:01

John Blum



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!