Browse Source

Correctly apply Sorting of unpaged `Pageable`.

Closes #1939
pull/1948/head
Mark Paluch 1 year ago
parent
commit
a4c462ec99
No known key found for this signature in database
GPG Key ID: 55BC6374BAA9D973
  1. 6
      spring-data-relational/src/main/java/org/springframework/data/relational/core/query/Query.java
  2. 21
      spring-data-relational/src/test/java/org/springframework/data/relational/core/query/QueryUnitTests.java

6
spring-data-relational/src/main/java/org/springframework/data/relational/core/query/Query.java

@ -171,12 +171,12 @@ public class Query { @@ -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());
}

21
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.*; @@ -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 { @@ -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 { @@ -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 { @@ -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);
}
}

Loading…
Cancel
Save