From 2f6955ec0ac78a220c97e7846ee4ce173fbd1380 Mon Sep 17 00:00:00 2001 From: "Greg L. Turnquist" Date: Wed, 22 Mar 2023 15:58:00 -0500 Subject: [PATCH] Add additional tests to verify proper detection of alias values. In the past, a token with "from" buried in it would trip up QueryUtils. These tests further demonstrate that this is no longer an issue with the HQL parser. Related: #2508. --- .../repository/query/HqlQueryTransformerTests.java | 11 +++++++++++ 1 file changed, 11 insertions(+) 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 cae0d71d3..56cb2c042 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 @@ -808,6 +808,17 @@ class HqlQueryTransformerTests { "select count(b) FROM BookError b WHERE portal = :portal"); } + @Test // GH-2508 + void detectAliasWithCastCorrectly() { + + assertThat(alias("from User u where (cast(:effective as date) is null) OR :effective >= u.createdAt")) + .isEqualTo("u"); + assertThat(alias("from User u where (cast(:effectiveDate as date) is null) OR :effectiveDate >= u.createdAt")) + .isEqualTo("u"); + assertThat(alias("from User u where (cast(:effectiveFrom as date) is null) OR :effectiveFrom >= u.createdAt")) + .isEqualTo("u"); + } + private void assertCountQuery(String originalQuery, String countQuery) { assertThat(createCountQueryFor(originalQuery)).isEqualTo(countQuery); }