From 4ff0671105dac4bf94cbed7c3dcf12541ed1075f Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Thu, 27 Jun 2013 22:19:01 +0200 Subject: [PATCH] DATAJPA-148 - Remove qualification of sort reference for functions. When applying Sort instances we now check for the presence of a ( which indicates a function to be executed. --- .../data/jpa/repository/query/QueryUtils.java | 2 +- .../data/jpa/repository/query/QueryUtilsUnitTests.java | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java b/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java index 4c4701f77..668430615 100644 --- a/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java +++ b/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java @@ -212,7 +212,7 @@ public abstract class QueryUtils { private static String getOrderClause(Set joinAliases, String alias, Order order) { String property = order.getProperty(); - boolean qualifyReference = true; + boolean qualifyReference = !property.contains("("); // ( indicates a function for (String joinAlias : joinAliases) { if (property.startsWith(joinAlias)) { diff --git a/src/test/java/org/springframework/data/jpa/repository/query/QueryUtilsUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/query/QueryUtilsUnitTests.java index 8f30836a1..e8729bfe2 100644 --- a/src/test/java/org/springframework/data/jpa/repository/query/QueryUtilsUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/query/QueryUtilsUnitTests.java @@ -223,6 +223,16 @@ public class QueryUtilsUnitTests { "select count(o) from Foo o where cb.id in (select b from Bar b)"); } + /** + * @see DATAJPA-148 + */ + @Test + public void doesNotPrefixSortsIfFunction() { + + Sort sort = new Sort("sum(foo)"); + assertThat(applySorting("select p from Person p", sort, "p"), endsWith("order by sum(foo) asc")); + } + private void assertCountQuery(String originalQuery, String countQuery) { assertThat(createCountQueryFor(originalQuery), is(countQuery)); }