From 5aef8c3b0bd7f368b5f972295e723ba26a99fb44 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Tue, 6 Sep 2016 17:09:17 +0200 Subject: [PATCH] DATAREDIS-551 - Fix pageable query execution when derived criteria is empty. We now make sure to count records without using criteria when derived criteria is empty. This allows usage of declared query methods using `Pageable` without criteria like `findBy(Pageable page)`. Original Pull Request: #220 --- .../data/redis/core/RedisQueryEngine.java | 5 +++++ .../RedisRepositoryIntegrationTestBase.java | 20 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/main/java/org/springframework/data/redis/core/RedisQueryEngine.java b/src/main/java/org/springframework/data/redis/core/RedisQueryEngine.java index 60f4e7b79..a4e9c6c86 100644 --- a/src/main/java/org/springframework/data/redis/core/RedisQueryEngine.java +++ b/src/main/java/org/springframework/data/redis/core/RedisQueryEngine.java @@ -40,6 +40,7 @@ import org.springframework.util.CollectionUtils; * Redis specific {@link QueryEngine} implementation. * * @author Christoph Strobl + * @author Mark Paluch * @since 1.7 */ class RedisQueryEngine extends QueryEngine> { @@ -156,6 +157,10 @@ class RedisQueryEngine extends QueryEngine() { @Override diff --git a/src/test/java/org/springframework/data/redis/repository/RedisRepositoryIntegrationTestBase.java b/src/test/java/org/springframework/data/redis/repository/RedisRepositoryIntegrationTestBase.java index c8458e95f..fe958180b 100644 --- a/src/test/java/org/springframework/data/redis/repository/RedisRepositoryIntegrationTestBase.java +++ b/src/test/java/org/springframework/data/redis/repository/RedisRepositoryIntegrationTestBase.java @@ -222,6 +222,24 @@ public abstract class RedisRepositoryIntegrationTestBase { assertThat(repo.findAll(firstPage.nextPageable()).getContent(), hasSize(1)); } + /** + * @see DATAREDIS-551 + */ + @Test + public void shouldApplyPageableCorrectlyWhenUsingFindByWithoutCriteria() { + + Person eddard = new Person("eddard", "stark"); + Person robb = new Person("robb", "stark"); + Person jon = new Person("jon", "snow"); + + repo.save(Arrays.asList(eddard, robb, jon)); + + Page firstPage = repo.findBy(new PageRequest(0, 2)); + assertThat(firstPage.getContent(), hasSize(2)); + assertThat(firstPage.getTotalElements(), is(equalTo(3L))); + assertThat(repo.findBy(firstPage.nextPageable()).getContent(), hasSize(1)); + } + /** * @see DATAREDIS-547 */ @@ -317,6 +335,8 @@ public abstract class RedisRepositoryIntegrationTestBase { List findTop2By(); List findTop2ByLastname(String lastname); + + Page findBy(Pageable page); } /**