diff --git a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JSqlParserQueryEnhancer.java b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JSqlParserQueryEnhancer.java index 03a92fed5..7b885b98e 100644 --- a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JSqlParserQueryEnhancer.java +++ b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JSqlParserQueryEnhancer.java @@ -141,7 +141,7 @@ public class JSqlParserQueryEnhancer implements QueryEnhancer { selectBody.getOrderByElements().addAll(orderByElements); - return selectBody.toString(); + return selectStatement.toString(); } diff --git a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/QueryEnhancerUnitTests.java b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/QueryEnhancerUnitTests.java index 6140b313b..b2956cc74 100644 --- a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/QueryEnhancerUnitTests.java +++ b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/QueryEnhancerUnitTests.java @@ -179,6 +179,17 @@ class QueryEnhancerUnitTests { assertThat(query).endsWithIgnoringCase("ORDER BY p.firstname, p.lastname asc"); } + @Test // GH-3263 + void preserveSourceQueryWhenAddingSort() { + + StringQuery query = new StringQuery("WITH all_projects AS (SELECT * FROM projects) SELECT * FROM all_projects p", + true); + + assertThat(getEnhancer(query).applySorting(Sort.by("name"), "p")) // + .startsWithIgnoringCase(query.getQueryString()) + .endsWithIgnoringCase("ORDER BY p.name ASC"); + } + @Test // GH-2812 void createCountQueryFromDeleteQuery() {