Correctly apply Sorting of unpaged Pageable.

Closes #1939
This commit is contained in:
Mark Paluch
2024-11-14 11:28:38 +01:00
parent a164871c5e
commit a4c462ec99
2 changed files with 22 additions and 7 deletions

View File

@@ -171,12 +171,12 @@ public class Query {
*/
public Query with(Pageable pageable) {
if (pageable.isUnpaged()) {
return this;
}
assertNoCaseSort(pageable.getSort());
if (pageable.isUnpaged()) {
return new Query(this.criteria, this.columns, this.sort.and(pageable.getSort()), this.limit, this.offset);
}
return new Query(this.criteria, this.columns, this.sort.and(pageable.getSort()), pageable.getPageSize(),
pageable.getOffset());
}

View File

@@ -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);
}
}