diff --git a/spring-data-jpa/src/main/antlr4/org/springframework/data/jpa/repository/query/Jpql.g4 b/spring-data-jpa/src/main/antlr4/org/springframework/data/jpa/repository/query/Jpql.g4 index 5c63a543b..271e9d168 100644 --- a/spring-data-jpa/src/main/antlr4/org/springframework/data/jpa/repository/query/Jpql.g4 +++ b/spring-data-jpa/src/main/antlr4/org/springframework/data/jpa/repository/query/Jpql.g4 @@ -602,6 +602,7 @@ identification_variable | INNER | KEY | LEFT + | NEW | ORDER | OUTER | FLOOR diff --git a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/HqlQueryRendererTests.java b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/HqlQueryRendererTests.java index d95edc11e..0feaf2cdd 100644 --- a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/HqlQueryRendererTests.java +++ b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/HqlQueryRendererTests.java @@ -1584,4 +1584,20 @@ class HqlQueryRendererTests { order by CTM_UTLRAW_NLSSORT_LOWER(b.nome) ASC """); } + + @Test // GH-3128 + void newShouldBeLegalAsPartOfAStateFieldPathExpression() { + + assertQuery(""" + SELECT j + FROM AgentUpdateTask j + WHERE j.creationTimestamp < :date + AND (j.status = com.ca.apm.acc.configserver.core.domain.jobs.AgentUpdateTaskStatus.NEW + OR + j.status = com.ca.apm.acc.configserver.core.domain.jobs.AgentUpdateTaskStatus.STARTED + OR + j.status = com.ca.apm.acc.configserver.core.domain.jobs.AgentUpdateTaskStatus.QUEUED) + ORDER BY j.id + """); + } } diff --git a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/JpqlQueryRendererTests.java b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/JpqlQueryRendererTests.java index c30dcbf71..d738ccac3 100644 --- a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/JpqlQueryRendererTests.java +++ b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/JpqlQueryRendererTests.java @@ -967,4 +967,20 @@ class JpqlQueryRendererTests { WHERE L.isLocked = FALSE OR L.forceUnlockTime < :time """); } + + @Test // GH-3128 + void newShouldBeLegalAsPartOfAStateFieldPathExpression() { + + assertQuery(""" + SELECT j + FROM AgentUpdateTask j + WHERE j.creationTimestamp < :date + AND (j.status = com.ca.apm.acc.configserver.core.domain.jobs.AgentUpdateTaskStatus.NEW + OR + j.status = com.ca.apm.acc.configserver.core.domain.jobs.AgentUpdateTaskStatus.STARTED + OR + j.status = com.ca.apm.acc.configserver.core.domain.jobs.AgentUpdateTaskStatus.QUEUED) + ORDER BY j.id + """); + } }