diff --git a/jpa/example/src/main/java/example/springdata/jpa/caching/CachingUserRepository.java b/jpa/example/src/main/java/example/springdata/jpa/caching/CachingUserRepository.java index 459e3206..292153e8 100644 --- a/jpa/example/src/main/java/example/springdata/jpa/caching/CachingUserRepository.java +++ b/jpa/example/src/main/java/example/springdata/jpa/caching/CachingUserRepository.java @@ -28,7 +28,7 @@ import org.springframework.data.repository.CrudRepository; public interface CachingUserRepository extends CrudRepository { @Override - @CacheEvict("byUsername") + @CacheEvict(value="byUsername", key="#p0.username") S save(S entity); @Cacheable("byUsername") diff --git a/jpa/example/src/test/java/example/springdata/jpa/caching/CachingRepositoryTests.java b/jpa/example/src/test/java/example/springdata/jpa/caching/CachingRepositoryTests.java index f117a885..730a5da3 100644 --- a/jpa/example/src/test/java/example/springdata/jpa/caching/CachingRepositoryTests.java +++ b/jpa/example/src/test/java/example/springdata/jpa/caching/CachingRepositoryTests.java @@ -36,13 +36,13 @@ import org.springframework.transaction.annotation.Transactional; @RunWith(SpringRunner.class) @Transactional @SpringBootTest -public abstract class CachingRepositoryTests { +public class CachingRepositoryTests { @Autowired CachingUserRepository repository; @Autowired CacheManager cacheManager; @Test - public void cachesValuesReturnedForQueryMethod() { + public void checkCachedValue() { User dave = new User(); dave.setUsername("dmatthews"); @@ -55,4 +55,17 @@ public abstract class CachingRepositoryTests { Cache cache = cacheManager.getCache("byUsername"); assertThat(cache.get("dmatthews").get()).isEqualTo(dave); } + + + @Test + public void checkCacheEviction() { + + User dave = new User(); + dave.setUsername("dmatthews"); + dave = repository.save(dave); + + // Verify entity evicted on cache + Cache cache = cacheManager.getCache("byUsername"); + assertThat(cache.get("dmatthews")).isEqualTo(null); + } }