diff --git a/src/main/java/org/springframework/data/jpa/repository/query/JpaCountQueryCreator.java b/src/main/java/org/springframework/data/jpa/repository/query/JpaCountQueryCreator.java index baf3a2a12..d7761494b 100644 --- a/src/main/java/org/springframework/data/jpa/repository/query/JpaCountQueryCreator.java +++ b/src/main/java/org/springframework/data/jpa/repository/query/JpaCountQueryCreator.java @@ -50,6 +50,8 @@ public class JpaCountQueryCreator extends JpaQueryCreator { @Override protected CriteriaQuery complete(Predicate predicate, Sort sort, CriteriaQuery query, CriteriaBuilder builder, Root root) { - return query.select(builder.count(root)).where(predicate); + + CriteriaQuery select = query.select(builder.count(root)); + return predicate == null ? select : select.where(predicate); } } diff --git a/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryCreator.java b/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryCreator.java index 0642b621f..c6f21d25c 100644 --- a/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryCreator.java +++ b/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryCreator.java @@ -129,7 +129,9 @@ public class JpaQueryCreator extends AbstractQueryCreator, */ protected CriteriaQuery complete(Predicate predicate, Sort sort, CriteriaQuery query, CriteriaBuilder builder, Root root) { - return this.query.select(root).where(predicate).orderBy(QueryUtils.toOrders(sort, root, builder)); + + CriteriaQuery select = this.query.select(root).orderBy(QueryUtils.toOrders(sort, root, builder)); + return predicate == null ? select : select.where(predicate); } /** diff --git a/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java b/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java index 2f88e441d..50a3073a3 100644 --- a/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java @@ -1136,6 +1136,20 @@ public class UserRepositoryTests { assertThat(repository.findByActiveTrue().size(), is(0)); } + /** + * @see DATAJPA-405 + */ + @Test + public void executesFinderWithOrderClauseOnly() { + + flushTestUsers(); + + List result = repository.findAllByOrderByLastnameAsc(); + + assertThat(result, hasSize(4)); + assertThat(result, contains(secondUser, firstUser, thirdUser, fourthUser)); + } + private Page executeSpecWithSort(Sort sort) { flushTestUsers(); 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 74ef492a7..3f506dfa0 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 @@ -283,4 +283,9 @@ public interface UserRepository extends JpaRepository, JpaSpecifi @Modifying @Query("update #{#entityName} u set u.active = :activeState where u.id in :ids") void updateUserActiveState(@Param("activeState") boolean activeState, @Param("ids") Integer... ids); + + /** + * @see DATAJPA-405 + */ + List findAllByOrderByLastnameAsc(); }