Skip to content

Commit 0b565a4

Browse files
christophstroblschauder
authored andcommitted
Fix query parsing error for properties using reserved lateral keyword.
Add tests for existing parsers and fix the HQL one. Closes: #3496
1 parent 92f1fe1 commit 0b565a4

File tree

4 files changed

+22
-0
lines changed

4 files changed

+22
-0
lines changed

spring-data-jpa/src/main/antlr4/org/springframework/data/jpa/repository/query/Hql.g4

+1
Original file line numberDiff line numberDiff line change
@@ -768,6 +768,7 @@ reservedWord
768768
| JOIN
769769
| KEY
770770
| LAST
771+
| LATERAL
771772
| LEADING
772773
| LEFT
773774
| LIKE

spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/EqlQueryRendererTests.java

+7
Original file line numberDiff line numberDiff line change
@@ -1026,4 +1026,11 @@ void entityNameWithPackageContainingReservedWord(String reservedWord) {
10261026
String source = "select new com.company.%s.thing.stuff.ClassName(e.id) from Experience e".formatted(reservedWord);
10271027
assertQuery(source);
10281028
}
1029+
1030+
@Test // GH-3496
1031+
void lateralShouldBeAValidParameter() {
1032+
1033+
assertQuery("select e from Employee e where e.lateral = :_lateral");
1034+
assertQuery("select te from TestEntity te where te.lateral = :lateral");
1035+
}
10291036
}

spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/HqlQueryRendererTests.java

+7
Original file line numberDiff line numberDiff line change
@@ -1568,6 +1568,13 @@ void typeShouldBeAValidParameter() {
15681568
assertQuery("select te from TestEntity te where te.type = :type");
15691569
}
15701570

1571+
@Test // GH-3496
1572+
void lateralShouldBeAValidParameter() {
1573+
1574+
assertQuery("select e from Employee e where e.lateral = :_lateral");
1575+
assertQuery("select te from TestEntity te where te.lateral = :lateral");
1576+
}
1577+
15711578
@Test // GH-3099
15721579
void functionNamesShouldSupportSchemaScoping() {
15731580

spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/JpqlQueryRendererTests.java

+7
Original file line numberDiff line numberDiff line change
@@ -965,6 +965,13 @@ void typeShouldBeAValidParameter() {
965965
assertQuery("select te from TestEntity te where te.type = :type");
966966
}
967967

968+
@Test // GH-3496
969+
void lateralShouldBeAValidParameter() {
970+
971+
assertQuery("select e from Employee e where e.lateral = :_lateral");
972+
assertQuery("select te from TestEntity te where te.lateral = :lateral");
973+
}
974+
968975
@Test // GH-3061
969976
void alternateNotEqualsOperatorShouldWork() {
970977
assertQuery("select e from Employee e where e.firstName != :name");

0 commit comments

Comments
 (0)