From cfeb314978d99a800ecedb8733e2cbfa1b4bb889 Mon Sep 17 00:00:00 2001 From: Diego Pedregal Date: Mon, 5 May 2025 11:13:59 +0200 Subject: [PATCH] Removes `PlainSelect` casting in `JSqlParserQueryEnhancer`. Closes: #3869 Original pull request: #3870 Signed-off-by: Diego Pedregal --- .../jpa/repository/query/JSqlParserQueryEnhancer.java | 3 ++- .../query/JSqlParserQueryEnhancerUnitTests.java | 9 +++++++++ 2 files changed, 11 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 1f4b3b8b1..5b0e5579e 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 @@ -64,6 +64,7 @@ import org.springframework.util.StringUtils; * @author Geoffrey Deremetz * @author Yanming Zhou * @author Christoph Strobl + * @author Diego Pedregal * @since 2.7.0 */ public class JSqlParserQueryEnhancer implements QueryEnhancer { @@ -237,7 +238,7 @@ public class JSqlParserQueryEnhancer implements QueryEnhancer { } StringJoiner joiner = new StringJoiner(", "); - for (SelectItem selectItem : ((PlainSelect) selectBody).getSelectItems()) { + for (SelectItem selectItem : selectBody.getPlainSelect().getSelectItems()) { joiner.add(selectItem.toString()); } return joiner.toString().trim(); diff --git a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/JSqlParserQueryEnhancerUnitTests.java b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/JSqlParserQueryEnhancerUnitTests.java index dee9d10d6..98c151ee6 100644 --- a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/JSqlParserQueryEnhancerUnitTests.java +++ b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/JSqlParserQueryEnhancerUnitTests.java @@ -257,4 +257,13 @@ public class JSqlParserQueryEnhancerUnitTests extends QueryEnhancerTckTests { null)); } + @Test // GH-3869 + void shouldWorkWithoutFromClause() { + String query = "SELECT is_contained_in(:innerId, :outerId)"; + + StringQuery stringQuery = new StringQuery(query, true); + + assertThat(stringQuery.getQueryString()).isEqualTo(query); + } + }