From 0edd1e1df4271e06511d0e150279c74a6353448e Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Mon, 11 Dec 2023 10:12:13 +0100 Subject: [PATCH 1/2] Prepare issue branch. --- pom.xml | 2 +- spring-data-envers/pom.xml | 4 ++-- spring-data-jpa-distribution/pom.xml | 2 +- spring-data-jpa/pom.xml | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index a3be6252ed..76bee7a148 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-jpa-parent - 3.3.0-SNAPSHOT + 3.3.x-3263-SNAPSHOT pom Spring Data JPA Parent diff --git a/spring-data-envers/pom.xml b/spring-data-envers/pom.xml index 470678d048..d1726502af 100755 --- a/spring-data-envers/pom.xml +++ b/spring-data-envers/pom.xml @@ -5,12 +5,12 @@ org.springframework.data spring-data-envers - 3.3.0-SNAPSHOT + 3.3.x-3263-SNAPSHOT org.springframework.data spring-data-jpa-parent - 3.3.0-SNAPSHOT + 3.3.x-3263-SNAPSHOT ../pom.xml diff --git a/spring-data-jpa-distribution/pom.xml b/spring-data-jpa-distribution/pom.xml index 6bd074181c..c4e28c5ff3 100644 --- a/spring-data-jpa-distribution/pom.xml +++ b/spring-data-jpa-distribution/pom.xml @@ -14,7 +14,7 @@ org.springframework.data spring-data-jpa-parent - 3.3.0-SNAPSHOT + 3.3.x-3263-SNAPSHOT ../pom.xml diff --git a/spring-data-jpa/pom.xml b/spring-data-jpa/pom.xml index ea9590bf8e..252dcae1f1 100644 --- a/spring-data-jpa/pom.xml +++ b/spring-data-jpa/pom.xml @@ -6,7 +6,7 @@ org.springframework.data spring-data-jpa - 3.3.0-SNAPSHOT + 3.3.x-3263-SNAPSHOT Spring Data JPA Spring Data module for JPA repositories. @@ -15,7 +15,7 @@ org.springframework.data spring-data-jpa-parent - 3.3.0-SNAPSHOT + 3.3.x-3263-SNAPSHOT ../pom.xml From c28128712f00e782d74ed97e1be3c7bd8f71f53b Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Mon, 11 Dec 2023 10:44:08 +0100 Subject: [PATCH 2/2] Render entire statement after applying sort. This commit makes sure to render the entire statement after applying the sort expression via the QueryEnhancer. Previously only parts, the actual statement body, had been considered. --- .../jpa/repository/query/JSqlParserQueryEnhancer.java | 2 +- .../jpa/repository/query/QueryEnhancerUnitTests.java | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) 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 03a92fed5e..7b885b98e2 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 String applySorting(Sort sort, @Nullable String alias) { 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 6140b313bf..0e5f61ee4b 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 @@ void findsExistingOrderByIndependentOfCase() { assertThat(query).endsWithIgnoringCase("ORDER BY p.firstname, p.lastname asc"); } + @Test // GH-3263 + void doesNotDropWithExpressionWhenApplySort() { + + 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("WITH all_projects AS (SELECT * FROM projects)") + .endsWithIgnoringCase("ORDER BY p.name ASC"); + } + @Test // GH-2812 void createCountQueryFromDeleteQuery() {