From 94ea258f0cad41be8bed4ff9b476537ec069316c Mon Sep 17 00:00:00 2001 From: "Greg L. Turnquist" Date: Tue, 23 May 2023 07:39:40 -0500 Subject: [PATCH 1/2] Create 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 a47a8bfbf2..f5f1e32a47 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-jpa-parent - 3.2.0-SNAPSHOT + 3.2.0-gh-2969-SNAPSHOT pom Spring Data JPA Parent diff --git a/spring-data-envers/pom.xml b/spring-data-envers/pom.xml index 0c3d16ef85..352db05a0a 100755 --- a/spring-data-envers/pom.xml +++ b/spring-data-envers/pom.xml @@ -5,12 +5,12 @@ org.springframework.data spring-data-envers - 3.2.0-SNAPSHOT + 3.2.0-gh-2969-SNAPSHOT org.springframework.data spring-data-jpa-parent - 3.2.0-SNAPSHOT + 3.2.0-gh-2969-SNAPSHOT ../pom.xml diff --git a/spring-data-jpa-distribution/pom.xml b/spring-data-jpa-distribution/pom.xml index 991cd8cbf0..aad9389cc1 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.2.0-SNAPSHOT + 3.2.0-gh-2969-SNAPSHOT ../pom.xml diff --git a/spring-data-jpa/pom.xml b/spring-data-jpa/pom.xml index 50e68c943b..d781740140 100644 --- a/spring-data-jpa/pom.xml +++ b/spring-data-jpa/pom.xml @@ -6,7 +6,7 @@ org.springframework.data spring-data-jpa - 3.2.0-SNAPSHOT + 3.2.0-gh-2969-SNAPSHOT Spring Data JPA Spring Data module for JPA repositories. @@ -15,7 +15,7 @@ org.springframework.data spring-data-jpa-parent - 3.2.0-SNAPSHOT + 3.2.0-gh-2969-SNAPSHOT ../pom.xml From 055422a06ae68c646d85b810f9fb17c8323a955a Mon Sep 17 00:00:00 2001 From: "Greg L. Turnquist" Date: Tue, 23 May 2023 07:40:04 -0500 Subject: [PATCH 2/2] HQL queries without a primary alias don't need Sorted properties prefixed. In the event a Hibernate query doesn't have a primary alias, don't attempt to prefix order by property settings. See #2969 --- .../repository/query/JpaQueryTransformerSupport.java | 11 +++++++++-- .../repository/query/HqlQueryTransformerTests.java | 7 +++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryTransformerSupport.java b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryTransformerSupport.java index acc73c772f..20b6fe920e 100644 --- a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryTransformerSupport.java +++ b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryTransformerSupport.java @@ -12,6 +12,7 @@ import org.springframework.data.domain.Sort; import org.springframework.data.jpa.domain.JpaSort; import org.springframework.lang.Nullable; +import org.springframework.util.ObjectUtils; /** * Transformational operations needed to support either {@link HqlQueryTransformer} or {@link JpqlQueryTransformer}. @@ -103,7 +104,7 @@ private void checkSortExpression(Sort.Order order) { */ private String generateOrderByArgument(@Nullable String primaryFromAlias, Sort.Order order) { - if (shouldPrefixWithAlias(order)) { + if (shouldPrefixWithAlias(order, primaryFromAlias)) { return primaryFromAlias + "." + order.getProperty(); } else { return order.getProperty(); @@ -115,9 +116,15 @@ private String generateOrderByArgument(@Nullable String primaryFromAlias, Sort.O * FROM clause's alias. * * @param order + * @param primaryFromAlias * @return boolean whether or not to apply the primary FROM clause's alias as a prefix */ - private boolean shouldPrefixWithAlias(Sort.Order order) { + private boolean shouldPrefixWithAlias(Sort.Order order, String primaryFromAlias) { + + // If there is no primary alias + if (ObjectUtils.isEmpty(primaryFromAlias)) { + return false; + } // If the Sort contains a function if (order.getProperty().contains("(")) { diff --git a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/HqlQueryTransformerTests.java b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/HqlQueryTransformerTests.java index 0b691a4c35..172be0489f 100644 --- a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/HqlQueryTransformerTests.java +++ b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/HqlQueryTransformerTests.java @@ -966,6 +966,13 @@ void shouldHandleAliasInsideCaseStatement() { "order by newDateDue desc"); } + @Test // GH-2969 + void fromWithoutAPrimaryAliasShouldWork() { + + assertThat(createQueryFor("FROM Story WHERE enabled = true", Sort.by(Sort.Direction.DESC, "created"))) + .isEqualTo("FROM Story WHERE enabled = true order by created desc"); + } + private void assertCountQuery(String originalQuery, String countQuery) { assertThat(createCountQueryFor(originalQuery)).isEqualTo(countQuery); }