From 2828e352faa2fcd7d1396a136a7a8d2617ef2cd9 Mon Sep 17 00:00:00 2001 From: ade90036 Date: Tue, 18 Sep 2018 14:35:29 +0100 Subject: [PATCH] #389 - Fix Cache eviction example. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Declare SpEL path to the key property on save(…) method accepting the entity. Original pull request: #412. --- .../jpa/caching/CachingUserRepository.java | 2 +- .../jpa/caching/CachingRepositoryTests.java | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) 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); + } }