diff --git a/src/main/java/org/springframework/data/jpa/repository/support/QueryDslJpaRepository.java b/src/main/java/org/springframework/data/jpa/repository/support/QueryDslJpaRepository.java index 5a87ca111..9c8e0d585 100644 --- a/src/main/java/org/springframework/data/jpa/repository/support/QueryDslJpaRepository.java +++ b/src/main/java/org/springframework/data/jpa/repository/support/QueryDslJpaRepository.java @@ -27,6 +27,7 @@ import javax.persistence.LockModeType; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; import org.springframework.data.jpa.repository.query.Jpa21Utils; import org.springframework.data.jpa.repository.query.JpaEntityGraph; import org.springframework.data.querydsl.EntityPathResolver; @@ -114,6 +115,15 @@ public class QueryDslJpaRepository extends SimpleJpa return executeSorted(createQuery(predicate), orders); } + /* + * (non-Javadoc) + * @see org.springframework.data.querydsl.QueryDslPredicateExecutor#findAll(com.mysema.query.types.Predicate, org.springframework.data.domain.Sort) + */ + @Override + public List findAll(Predicate predicate, Sort sort) { + return executeSorted(createQuery(predicate), sort); + } + /* * (non-Javadoc) * @see org.springframework.data.querydsl.QueryDslPredicateExecutor#findAll(com.mysema.query.types.OrderSpecifier[]) @@ -204,6 +214,17 @@ public class QueryDslJpaRepository extends SimpleJpa * @return */ private List executeSorted(JPQLQuery query, OrderSpecifier... orders) { - return querydsl.applySorting(new QSort(orders), query).list(path); + return executeSorted(query, new QSort(orders)); + } + + /** + * Executes the given {@link JPQLQuery} after applying the given {@link Sort}. + * + * @param query must not be {@literal null}. + * @param sort must not be {@literal null}. + * @return + */ + private List executeSorted(JPQLQuery query, Sort sort) { + return querydsl.applySorting(sort, query).list(path); } } 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 335440dbe..ba0ed6f56 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 @@ -336,4 +336,18 @@ public class QueryDslJpaRepositoryTests { assertThat(repository.exists(user.firstname.eq("Unknown")), is(false)); assertThat(repository.exists((Predicate) null), is(true)); } + + /** + * @see DATAJPA-679 + */ + @Test + public void shouldSupportFindAllWithPredicateAndSort() { + + List users = repository.findAll(user.dateOfBirth.isNull(), new Sort(Direction.ASC, "firstname")); + + assertThat(users, hasSize(3)); + assertThat(users.get(0).getFirstname(), is(carter.getFirstname())); + assertThat(users.get(2).getFirstname(), is(oliver.getFirstname())); + assertThat(users, hasItems(carter, dave, oliver)); + } }