diff --git a/src/main/java/org/springframework/data/jpa/repository/support/Querydsl.java b/src/main/java/org/springframework/data/jpa/repository/support/Querydsl.java index dea0f96b9..5c055d339 100644 --- a/src/main/java/org/springframework/data/jpa/repository/support/Querydsl.java +++ b/src/main/java/org/springframework/data/jpa/repository/support/Querydsl.java @@ -104,7 +104,7 @@ public class Querydsl { query.offset(pageable.getOffset()); query.limit(pageable.getPageSize()); - return query; + return applySorting(pageable.getSort(), query); } /** diff --git a/src/test/java/org/springframework/data/jpa/repository/support/QueryDslJpaRepositoryTests.java b/src/test/java/org/springframework/data/jpa/repository/support/QueryDslJpaRepositoryTests.java index b0e5bfb16..f6476adb1 100644 --- a/src/test/java/org/springframework/data/jpa/repository/support/QueryDslJpaRepositoryTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/support/QueryDslJpaRepositoryTests.java @@ -26,12 +26,16 @@ import javax.persistence.PersistenceContext; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Sort.Direction; import org.springframework.data.jpa.domain.sample.QUser; import org.springframework.data.jpa.domain.sample.User; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; +import com.mysema.query.types.Predicate; import com.mysema.query.types.expr.BooleanExpression; import com.mysema.query.types.path.PathBuilder; import com.mysema.query.types.path.PathBuilderFactory; @@ -89,4 +93,23 @@ public class QueryDslJpaRepositoryTests { assertThat(result.size(), is(2)); assertThat(result, hasItems(carter, dave)); } + + /** + * @see DATAJPA-243 + */ + @Test + public void considersSortingProvidedThroughPageable() { + + Predicate lastnameContainsE = user.lastname.contains("e"); + + Page result = repository.findAll(lastnameContainsE, new PageRequest(0, 1, Direction.ASC, "lastname")); + + assertThat(result.getContent(), hasSize(1)); + assertThat(result.getContent().get(0), is(carter)); + + result = repository.findAll(lastnameContainsE, new PageRequest(0, 1, Direction.DESC, "lastname")); + + assertThat(result.getContent(), hasSize(1)); + assertThat(result.getContent().get(0), is(dave)); + } }