From aa6a7c1983454d1991cc061ab63dae85be5ff70d Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Sat, 27 Aug 2011 20:31:06 +0100 Subject: [PATCH] DATAJPA-94 - Repository queries consider Sort instance in a Pageable again. --- .../data/jpa/repository/query/PartTreeJpaQuery.java | 2 +- .../jpa/repository/UserRepositoryFinderTests.java | 13 +++++++++++++ .../data/jpa/repository/sample/UserRepository.java | 3 +++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/data/jpa/repository/query/PartTreeJpaQuery.java b/src/main/java/org/springframework/data/jpa/repository/query/PartTreeJpaQuery.java index 137c2578a..08c6e1fa3 100644 --- a/src/main/java/org/springframework/data/jpa/repository/query/PartTreeJpaQuery.java +++ b/src/main/java/org/springframework/data/jpa/repository/query/PartTreeJpaQuery.java @@ -167,7 +167,7 @@ public class PartTreeJpaQuery extends AbstractJpaQuery { private Sort getDynamicSort(Object[] values) { - return parameters.hasSortParameter() ? new ParametersParameterAccessor( + return parameters.potentiallySortsDynamically() ? new ParametersParameterAccessor( parameters, values).getSort() : null; } } diff --git a/src/test/java/org/springframework/data/jpa/repository/UserRepositoryFinderTests.java b/src/test/java/org/springframework/data/jpa/repository/UserRepositoryFinderTests.java index b72049ae7..08fc7bd59 100644 --- a/src/test/java/org/springframework/data/jpa/repository/UserRepositoryFinderTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/UserRepositoryFinderTests.java @@ -27,6 +27,8 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Sort; +import org.springframework.data.domain.Sort.Direction; import org.springframework.data.jpa.domain.sample.User; import org.springframework.data.jpa.repository.sample.UserRepository; import org.springframework.data.repository.query.QueryLookupStrategy; @@ -177,4 +179,15 @@ public class UserRepositoryFinderTests { assertThat(result.get(0), is(dave)); } + @Test + public void respectsPageableOrderOnQueryGenerateFromMethodName() throws Exception { + Page ascending = userRepository.findByLastnameIgnoringCase(new PageRequest(0, 10, new Sort(Direction.ASC, "firstname")),"Matthews"); + Page descending = userRepository.findByLastnameIgnoringCase(new PageRequest(0, 10, new Sort(Direction.DESC, "firstname")),"Matthews"); + assertThat(ascending.getTotalElements(), is(2L)); + assertThat(descending.getTotalElements(), is(2L)); + assertThat(ascending.getContent().get(0).getFirstname(), is(not(equalTo(descending.getContent().get(0).getFirstname())))); + assertThat(ascending.getContent().get(0).getFirstname(), is(equalTo(descending.getContent().get(1).getFirstname()))); + assertThat(ascending.getContent().get(1).getFirstname(), is(equalTo(descending.getContent().get(0).getFirstname()))); + } + } diff --git a/src/test/java/org/springframework/data/jpa/repository/sample/UserRepository.java b/src/test/java/org/springframework/data/jpa/repository/sample/UserRepository.java index a29ce6ad9..f8fe2fac2 100644 --- a/src/test/java/org/springframework/data/jpa/repository/sample/UserRepository.java +++ b/src/test/java/org/springframework/data/jpa/repository/sample/UserRepository.java @@ -220,6 +220,9 @@ public interface UserRepository extends JpaRepository, List findByLastnameIgnoringCase(String lastname); + Page findByLastnameIgnoringCase(Pageable pageable, String lastname); + + List findByLastnameIgnoringCaseLike(String lastname);