-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Closed
Labels
type: regressionA regression from a previous releaseA regression from a previous release
Milestone
Description
With 3.2.11, repository initialization fails with
Caused by: java.lang.NullPointerException: Cannot invoke "org.antlr.v4.runtime.ParserRuleContext.getParent()" because "ctx" is null
at org.springframework.data.jpa.repository.query.HqlQueryTransformer.isSubquery(HqlQueryTransformer.java:105) ~[spring-data-jpa-3.2.11.jar:3.2.11]
at org.springframework.data.jpa.repository.query.HqlQueryTransformer.isSubquery(HqlQueryTransformer.java:105) ~[spring-data-jpa-3.2.11.jar:3.2.11]
at org.springframework.data.jpa.repository.query.HqlQueryTransformer.isSubquery(HqlQueryTransformer.java:105) ~[spring-data-jpa-3.2.11.jar:3.2.11]
at org.springframework.data.jpa.repository.query.HqlQueryTransformer.isSubquery(HqlQueryTransformer.java:105) ~[spring-data-jpa-3.2.11.jar:3.2.11]
at org.springframework.data.jpa.repository.query.HqlQueryTransformer.isSubquery(HqlQueryTransformer.java:105) ~[spring-data-jpa-3.2.11.jar:3.2.11]
at org.springframework.data.jpa.repository.query.HqlQueryTransformer.isSubquery(HqlQueryTransformer.java:105) ~[spring-data-jpa-3.2.11.jar:3.2.11]
at org.springframework.data.jpa.repository.query.HqlQueryTransformer.visitVariable(HqlQueryTransformer.java:362) ~[spring-data-jpa-3.2.11.jar:3.2.11]
at org.springframework.data.jpa.repository.query.HqlQueryRenderer.visitVariable(HqlQueryRenderer.java:1) ~[spring-data-jpa-3.2.11.jar:3.2.11]
Issue is very similar to #2977 but for update clauses:
update MyEntityStaging AS mes
set mes.col = 'test'
where mes.id = 1
Entity:
@Entity
@NamedQuery(name = "MyEntity.updateCol", query = """
update MyEntity AS mes
set mes.col = 'test'
where mes.id = 1
""")
class MyEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
private String col;
}
Repository:
interface MyEntityRepository extends JpaRepository<MyEntity, Long> {
@Modifying
@Transactional
void updateCol();
}
Reproducer:
demo.zip
Extract and run ./mvnw spring-boot:run to observe the exception.
In the pom.xml, change the spring-data-jpa.version from 3.2.11 to 3.2.10 and run again, now it works.
My investigation:
Specifically, this change causes HqlQueryTransformer#isSubquery(ParserRuleContext)
to be run for update clauses & likely needs the same fix from #2977 applied for HqlParser.UpdateStatementContext
(see commit 6b9d3e2)
Wrokaround:
Removing the AS
from the table alias bypass this error.
Metadata
Metadata
Assignees
Labels
type: regressionA regression from a previous releaseA regression from a previous release