diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/query/Query.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/query/Query.java index 44551b50e..2a1427e75 100644 --- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/query/Query.java +++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/query/Query.java @@ -171,12 +171,12 @@ public class Query { */ public Query with(Pageable pageable) { + assertNoCaseSort(pageable.getSort()); + if (pageable.isUnpaged()) { - return this; + return new Query(this.criteria, this.columns, this.sort.and(pageable.getSort()), this.limit, this.offset); } - assertNoCaseSort(pageable.getSort()); - return new Query(this.criteria, this.columns, this.sort.and(pageable.getSort()), pageable.getPageSize(), pageable.getOffset()); } diff --git a/spring-data-relational/src/test/java/org/springframework/data/relational/core/query/QueryUnitTests.java b/spring-data-relational/src/test/java/org/springframework/data/relational/core/query/QueryUnitTests.java index 027ff6641..97d7493b5 100644 --- a/spring-data-relational/src/test/java/org/springframework/data/relational/core/query/QueryUnitTests.java +++ b/spring-data-relational/src/test/java/org/springframework/data/relational/core/query/QueryUnitTests.java @@ -19,16 +19,18 @@ import static org.assertj.core.api.Assertions.*; import org.junit.jupiter.api.Test; import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; /** * Tests the {@link Query} class. * * @author Jens Schauder + * @author Mark Paluch */ public class QueryUnitTests { - @Test // DATAJDBC614 + @Test // DATAJDBC-614 public void withCombinesSortAndPaging() { Query query = Query.empty() // @@ -40,7 +42,7 @@ public class QueryUnitTests { .containsExactly("alpha", "beta"); } - @Test // DATAJDBC614 + @Test // DATAJDBC-614 public void withCombinesEmptySortAndPaging() { Query query = Query.empty() // @@ -51,7 +53,7 @@ public class QueryUnitTests { .containsExactly("beta"); } - @Test // DATAJDBC614 + @Test // DATAJDBC-614 public void withCombinesSortAndUnsortedPaging() { Query query = Query.empty() // @@ -62,4 +64,17 @@ public class QueryUnitTests { .extracting(Sort.Order::getProperty) // .containsExactly("alpha"); } + + @Test // GH-1939 + public void withCombinesUnpagedWithSort() { + + Query query = Query.empty() // + .with(Pageable.unpaged(Sort.by("beta"))); + + assertThat(query.getSort().get()) // + .extracting(Sort.Order::getProperty) // + .containsExactly("beta"); + assertThat(query.getLimit()).isEqualTo(-1); + assertThat(query.getOffset()).isEqualTo(-1); + } }