From aafe04db51c4289a37bf3331b0d595ec1a8cef78 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 24 Sep 2018 09:50:49 -0400 Subject: [PATCH] #436 - Add Redis QbE (Query by Example) example. --- .../redis/repositories/PersonRepository.java | 3 ++- .../repositories/PersonRepositoryTests.java | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/redis/repositories/src/main/java/example/springdata/redis/repositories/PersonRepository.java b/redis/repositories/src/main/java/example/springdata/redis/repositories/PersonRepository.java index cfcbf1b5..8fba43ff 100644 --- a/redis/repositories/src/main/java/example/springdata/redis/repositories/PersonRepository.java +++ b/redis/repositories/src/main/java/example/springdata/redis/repositories/PersonRepository.java @@ -21,12 +21,13 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.geo.Circle; import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.query.QueryByExampleExecutor; /** * @author Christoph Strobl * @author Mark Paluch */ -interface PersonRepository extends CrudRepository { +interface PersonRepository extends CrudRepository, QueryByExampleExecutor { List findByLastname(String lastname); diff --git a/redis/repositories/src/test/java/example/springdata/redis/repositories/PersonRepositoryTests.java b/redis/repositories/src/test/java/example/springdata/redis/repositories/PersonRepositoryTests.java index bad639e8..bd3df118 100644 --- a/redis/repositories/src/test/java/example/springdata/redis/repositories/PersonRepositoryTests.java +++ b/redis/repositories/src/test/java/example/springdata/redis/repositories/PersonRepositoryTests.java @@ -33,6 +33,7 @@ import org.junit.rules.RuleChain; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.domain.Example; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; @@ -144,6 +145,21 @@ public class PersonRepositoryTests { assertThat(aryaAndJon).containsOnly(arya, jon); } + /** + * Find entities by {@link Example Query by Example}. + */ + @Test + public void findByQueryByExample() { + + flushTestUsers(); + + Example example = Example.of(new Person(null, "stark", null)); + + Iterable starks = repository.findAll(example); + + assertThat(starks).contains(arya, eddard).doesNotContain(jon); + } + /** * Find entities in range defined by {@link Pageable}. */