From 66834db5a7651ba666e5d4c74901fbc72085d7fd Mon Sep 17 00:00:00 2001 From: Jens Schauder Date: Mon, 24 Jun 2019 14:00:44 +0200 Subject: [PATCH] DATAJPA-1061 - Polishing. Tweaked the formatting and the naming of variables. Original pull request: #276. --- .../data/jpa/repository/query/QueryUtils.java | 12 ++++++------ .../jpa/repository/query/QueryUtilsUnitTests.java | 9 +++++++++ 2 files changed, 15 insertions(+), 6 deletions(-) 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 d91e6ea38..ac842dd0c 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 @@ -262,12 +262,12 @@ public abstract class QueryUtils { builder.append(", "); } - Set aliases = getOuterJoinAliases(query); - Set fieldAliases = getFunctionAliases(query); - fieldAliases.addAll(getFieldAliases(query)); + Set joinAliases = getOuterJoinAliases(query); + Set selectionAliases = getFunctionAliases(query); + selectionAliases.addAll(getFieldAliases(query)); for (Order order : sort) { - builder.append(getOrderClause(aliases, fieldAliases, alias, order)).append(", "); + builder.append(getOrderClause(joinAliases, selectionAliases, alias, order)).append(", "); } builder.delete(builder.length() - 2, builder.length()); @@ -284,14 +284,14 @@ public abstract class QueryUtils { * @param order the order object to build the clause for. Must not be {@literal null}. * @return a String containing a order clause. Guaranteed to be not {@literal null}. */ - private static String getOrderClause(Set joinAliases, Set fieldAlias, @Nullable String alias, + private static String getOrderClause(Set joinAliases, Set selectionAlias, @Nullable String alias, Order order) { String property = order.getProperty(); checkSortExpression(order); - if (fieldAlias.contains(property)) { + if (selectionAlias.contains(property)) { return String.format("%s %s", property, toJpaDirection(order)); } 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 52c81fdc5..cd43c8d9a 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 @@ -426,25 +426,34 @@ public class QueryUtilsUnitTests { @Test // DATAJPA-1061 public void appliesSortCorrectlyForFieldAliases() { + String query = "SELECT m.price, lower(m.title) AS title, a.name as authorName FROM Magazine m INNER JOIN m.author a"; Sort sort = Sort.by("authorName"); + String fullQuery = applySorting(query, sort); + assertThat(fullQuery, endsWith("order by authorName asc")); } @Test // DATAJPA-1061 public void appliesSortCorrectlyForFunctionAliases() { + String query = "SELECT m.price, lower(m.title) AS title, a.name as authorName FROM Magazine m INNER JOIN m.author a"; Sort sort = Sort.by("title"); + String fullQuery = applySorting(query, sort); + assertThat(fullQuery, endsWith("order by title asc")); } @Test // DATAJPA-1061 public void appliesSortCorrectlyForSimpleField() { + String query = "SELECT m.price, lower(m.title) AS title, a.name as authorName FROM Magazine m INNER JOIN m.author a"; Sort sort = Sort.by("price"); + String fullQuery = applySorting(query, sort); + assertThat(fullQuery, endsWith("order by m.price asc")); }