-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Open
Labels
type: regressionA regression from a previous releaseA regression from a previous release
Description
Affected versions: Spring Boot 3.5.5 (Spring Data JPA aligned), Hibernate 6.6.26.Final
Last known good: Spring Boot 3.3.5 (same code works)
Summary
Repository methods annotated with @Query
that include JPQL-style /* ... */
comments no longer parse in 3.5.x. Startup fails with a Hibernate HQL grammar error at the first /
token. In 3.3.5 the same query worked.
Sample repository
Minimal repro: https://github.com/Rapirys/spring-data-jpa-issue
Steps to reproduce
- Clone repo.
- Run with Boot 3.5.5:
./gradlew clean run
→ fails during repository initialization. - Change Boot to 3.3.5 in
build.gradle
, re-run → starts OK.
Code causing the issue
@Query("""
SELECT /* Multi-line comment
spanning multiple lines */ u
FROM User u
WHERE /* Inline comment */ u.email IS NOT NULL
""")
List<User> findUsersWithEmail();
Actual behavior
Application fails to start with:
6:10:46 PM: Executing ':org.example.Main.main()'…
> Task :processResources UP-TO-DATE
> Task :generateEffectiveLombokConfig
> Task :compileJava
> Task :classes
> Task :org.example.Main.main()
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.5.5)
2025-08-28T18:10:51.630+02:00 INFO 40080 --- [ main] org.example.Main : Starting Main using Java 17.0.15 with PID 40080 (C:\Work\JnJ\spring-data-jpa-issue\build\classes\java\main started by KyryloRotan in C:\Work\JnJ\spring-data-jpa-issue)
2025-08-28T18:10:51.643+02:00 INFO 40080 --- [ main] org.example.Main : No active profile set, falling back to 1 default profile: "default"
2025-08-28T18:10:52.739+02:00 INFO 40080 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2025-08-28T18:10:52.821+02:00 INFO 40080 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 66 ms. Found 1 JPA repository interface.
2025-08-28T18:10:53.686+02:00 INFO 40080 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http)
2025-08-28T18:10:53.708+02:00 INFO 40080 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2025-08-28T18:10:53.708+02:00 INFO 40080 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.44]
2025-08-28T18:10:53.796+02:00 INFO 40080 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2025-08-28T18:10:53.799+02:00 INFO 40080 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2020 ms
2025-08-28T18:10:54.336+02:00 INFO 40080 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
2025-08-28T18:10:54.598+02:00 INFO 40080 --- [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.6.26.Final
2025-08-28T18:10:55.247+02:00 INFO 40080 --- [ main] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled
2025-08-28T18:10:55.602+02:00 INFO 40080 --- [ main] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer
2025-08-28T18:10:55.644+02:00 INFO 40080 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2025-08-28T18:10:55.877+02:00 INFO 40080 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection conn0: url=jdbc:h2:mem:testdb user=SA
2025-08-28T18:10:55.880+02:00 INFO 40080 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
2025-08-28T18:10:55.915+02:00 WARN 40080 --- [ main] org.hibernate.orm.deprecation : HHH90000025: H2Dialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default)
2025-08-28T18:10:56.001+02:00 INFO 40080 --- [ main] org.hibernate.orm.connections.pooling : HHH10001005: Database info:
Database JDBC URL [Connecting through datasource 'HikariDataSource (HikariPool-1)']
Database driver: undefined/unknown
Database version: 2.3.232
Autocommit mode: undefined/unknown
Isolation level: undefined/unknown
Minimum pool size: undefined/unknown
Maximum pool size: undefined/unknown
2025-08-28T18:10:56.941+02:00 INFO 40080 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)
2025-08-28T18:10:56.962+02:00 DEBUG 40080 --- [ main] org.hibernate.SQL :
drop table if exists users cascade
Hibernate:
drop table if exists users cascade
2025-08-28T18:10:56.972+02:00 DEBUG 40080 --- [ main] org.hibernate.SQL :
create table users (
active boolean,
id bigint generated by default as identity,
email varchar(255),
username varchar(255),
primary key (id)
)
Hibernate:
create table users (
active boolean,
id bigint generated by default as identity,
email varchar(255),
username varchar(255),
primary key (id)
)
2025-08-28T18:10:56.986+02:00 INFO 40080 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2025-08-28T18:10:57.075+02:00 DEBUG 40080 --- [ main] .c.JpaMetamodelMappingContextFactoryBean : Initializing JpaMetamodelMappingContext…
2025-08-28T18:10:57.110+02:00 DEBUG 40080 --- [ main] .c.JpaMetamodelMappingContextFactoryBean : Finished initializing JpaMetamodelMappingContext
2025-08-28T18:10:57.902+02:00 DEBUG 40080 --- [ main] o.s.d.jpa.repository.query.NamedQuery : Did not find named query User.findUsersWithEmail.count
2025-08-28T18:10:57.924+02:00 INFO 40080 --- [ main] o.s.d.j.r.query.QueryEnhancerFactory : Hibernate is in classpath; If applicable, HQL parser will be used.
2025-08-28T18:10:58.098+02:00 WARN 40080 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dataInitializer' defined in file [C:\Work\JnJ\spring-data-jpa-issue\build\classes\java\main\org\example\config\DataInitializer.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'userRepository' defined in org.example.repository.UserRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Could not create query for public abstract java.util.List org.example.repository.UserRepository.findUsersWithEmail(); Reason: At 1:7 and token '/', mismatched input '/', expecting one of the following tokens: '(', '[', ':', '{', '?', ID, VERSION, VERSIONED, NATURALID, FK, ALL, AND, ANY, AS, ASC, AVG, BETWEEN, BOTH, BREADTH, BY, CASE, CAST, COLLATE, COLUMN, CONFLICT, CONSTRAINT, CONTAINS, COUNT, CROSS, CUBE, CURRENT, CURRENT_DATE, CURRENT_INSTANT, CURRENT_TIME, CURRENT_TIMESTAMP, CYCLE, DATE, DATETIME, DAY, DEFAULT, DELETE, DEPTH, DESC, DISTINCT, DO, ELEMENT, ELEMENTS, ELSE, EMPTY, END, ENTRY, EPOCH, ERROR, ESCAPE, EVERY, EXCEPT, EXCLUDE, EXISTS, EXTRACT, FETCH, FILTER, FIRST, FOLLOWING, FOR, FORMAT, FROM, FULL, FUNCTION, GROUP, GROUPS, HAVING, HOUR, IGNORE, ILIKE, IN, INCLUDES, INDEX, INDICES, INNER, INSERT, INSTANT, INTERSECT, INTERSECTS, INTO, IS, JOIN, KEY, KEYS, LAST, LATERAL, LEADING, LEFT, LIKE, LIMIT, LIST, LISTAGG, LOCAL, LOCAL_DATE, LOCAL_DATETIME, LOCAL_TIME, MAP, MATERIALIZED, MAX, MAXELEMENT, MAXINDEX, MEMBER, MICROSECOND, MILLISECOND, MIN, MINELEMENT, MININDEX, MINUTE, MONTH, NANOSECOND, NEW, NEXT, NO, NOT, NOTHING, NULLS, OBJECT, OF, OFFSET, OFFSET_DATETIME, ON, ONLY, OR, ORDER, OTHERS, OUTER, OVER, OVERFLOW, OVERLAY, PAD, PARTITION, PERCENT, PLACING, POSITION, PRECEDING, QUARTER, RANGE, RESPECT, RIGHT, ROLLUP, ROW, ROWS, SEARCH, SECOND, SELECT, SET, SIZE, SOME, SUBSTRING, SUM, THEN, TIES, TIME, TIMESTAMP, TIMEZONE_HOUR, TIMEZONE_MINUTE, TO, TRAILING, TREAT, TRIM, TRUNC, TRUNCATE, TYPE, UNBOUNDED, UNION, UPDATE, USING, VALUE, VALUES, WEEK, WHEN, WHERE, WITH, WITHIN, WITHOUT, YEAR, ZONED, NULL, TRUE, FALSE, STRING_LITERAL, JAVA_STRING_LITERAL, INTEGER_LITERAL, LONG_LITERAL, FLOAT_LITERAL, DOUBLE_LITERAL, BIG_INTEGER_LITERAL, BIG_DECIMAL_LITERAL, HEX_LITERAL, BINARY_LITERAL, '{ts', '{d', '{t', '+', '-', IDENTIFIER, QUOTED_IDENTIFIER; Bad HQL grammar [SELECT /* Multi-line comment
spanning multiple lines */
u FROM User u
WHERE /* Inline comment */ u.email IS NOT NULL
]
2025-08-28T18:10:58.098+02:00 INFO 40080 --- [ main] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2025-08-28T18:10:58.101+02:00 DEBUG 40080 --- [ main] org.hibernate.SQL :
drop table if exists users cascade
Hibernate:
drop table if exists users cascade
2025-08-28T18:10:58.113+02:00 INFO 40080 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
2025-08-28T18:10:58.121+02:00 INFO 40080 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
2025-08-28T18:10:58.133+02:00 INFO 40080 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
2025-08-28T18:10:58.179+02:00 INFO 40080 --- [ main] .s.b.a.l.ConditionEvaluationReportLogger :
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2025-08-28T18:10:58.248+02:00 ERROR 40080 --- [ main] o.s.boot.SpringApplication : Application run failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dataInitializer' defined in file [C:\Work\JnJ\spring-data-jpa-issue\build\classes\java\main\org\example\config\DataInitializer.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'userRepository' defined in org.example.repository.UserRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Could not create query for public abstract java.util.List org.example.repository.UserRepository.findUsersWithEmail(); Reason: At 1:7 and token '/', mismatched input '/', expecting one of the following tokens: '(', '[', ':', '{', '?', ID, VERSION, VERSIONED, NATURALID, FK, ALL, AND, ANY, AS, ASC, AVG, BETWEEN, BOTH, BREADTH, BY, CASE, CAST, COLLATE, COLUMN, CONFLICT, CONSTRAINT, CONTAINS, COUNT, CROSS, CUBE, CURRENT, CURRENT_DATE, CURRENT_INSTANT, CURRENT_TIME, CURRENT_TIMESTAMP, CYCLE, DATE, DATETIME, DAY, DEFAULT, DELETE, DEPTH, DESC, DISTINCT, DO, ELEMENT, ELEMENTS, ELSE, EMPTY, END, ENTRY, EPOCH, ERROR, ESCAPE, EVERY, EXCEPT, EXCLUDE, EXISTS, EXTRACT, FETCH, FILTER, FIRST, FOLLOWING, FOR, FORMAT, FROM, FULL, FUNCTION, GROUP, GROUPS, HAVING, HOUR, IGNORE, ILIKE, IN, INCLUDES, INDEX, INDICES, INNER, INSERT, INSTANT, INTERSECT, INTERSECTS, INTO, IS, JOIN, KEY, KEYS, LAST, LATERAL, LEADING, LEFT, LIKE, LIMIT, LIST, LISTAGG, LOCAL, LOCAL_DATE, LOCAL_DATETIME, LOCAL_TIME, MAP, MATERIALIZED, MAX, MAXELEMENT, MAXINDEX, MEMBER, MICROSECOND, MILLISECOND, MIN, MINELEMENT, MININDEX, MINUTE, MONTH, NANOSECOND, NEW, NEXT, NO, NOT, NOTHING, NULLS, OBJECT, OF, OFFSET, OFFSET_DATETIME, ON, ONLY, OR, ORDER, OTHERS, OUTER, OVER, OVERFLOW, OVERLAY, PAD, PARTITION, PERCENT, PLACING, POSITION, PRECEDING, QUARTER, RANGE, RESPECT, RIGHT, ROLLUP, ROW, ROWS, SEARCH, SECOND, SELECT, SET, SIZE, SOME, SUBSTRING, SUM, THEN, TIES, TIME, TIMESTAMP, TIMEZONE_HOUR, TIMEZONE_MINUTE, TO, TRAILING, TREAT, TRIM, TRUNC, TRUNCATE, TYPE, UNBOUNDED, UNION, UPDATE, USING, VALUE, VALUES, WEEK, WHEN, WHERE, WITH, WITHIN, WITHOUT, YEAR, ZONED, NULL, TRUE, FALSE, STRING_LITERAL, JAVA_STRING_LITERAL, INTEGER_LITERAL, LONG_LITERAL, FLOAT_LITERAL, DOUBLE_LITERAL, BIG_INTEGER_LITERAL, BIG_DECIMAL_LITERAL, HEX_LITERAL, BINARY_LITERAL, '{ts', '{d', '{t', '+', '-', IDENTIFIER, QUOTED_IDENTIFIER; Bad HQL grammar [SELECT /* Multi-line comment
spanning multiple lines */
u FROM User u
WHERE /* Inline comment */ u.email IS NOT NULL
]
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:804) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1395) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1232) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1222) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1188) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1123) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:987) ~[spring-context-6.2.10.jar:6.2.10]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) ~[spring-context-6.2.10.jar:6.2.10]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.5.5.jar:3.5.5]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752) ~[spring-boot-3.5.5.jar:3.5.5]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) ~[spring-boot-3.5.5.jar:3.5.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) ~[spring-boot-3.5.5.jar:3.5.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1361) ~[spring-boot-3.5.5.jar:3.5.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1350) ~[spring-boot-3.5.5.jar:3.5.5]
at org.example.Main.main(Main.java:9) ~[main/:na]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository' defined in org.example.repository.UserRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Could not create query for public abstract java.util.List org.example.repository.UserRepository.findUsersWithEmail(); Reason: At 1:7 and token '/', mismatched input '/', expecting one of the following tokens: '(', '[', ':', '{', '?', ID, VERSION, VERSIONED, NATURALID, FK, ALL, AND, ANY, AS, ASC, AVG, BETWEEN, BOTH, BREADTH, BY, CASE, CAST, COLLATE, COLUMN, CONFLICT, CONSTRAINT, CONTAINS, COUNT, CROSS, CUBE, CURRENT, CURRENT_DATE, CURRENT_INSTANT, CURRENT_TIME, CURRENT_TIMESTAMP, CYCLE, DATE, DATETIME, DAY, DEFAULT, DELETE, DEPTH, DESC, DISTINCT, DO, ELEMENT, ELEMENTS, ELSE, EMPTY, END, ENTRY, EPOCH, ERROR, ESCAPE, EVERY, EXCEPT, EXCLUDE, EXISTS, EXTRACT, FETCH, FILTER, FIRST, FOLLOWING, FOR, FORMAT, FROM, FULL, FUNCTION, GROUP, GROUPS, HAVING, HOUR, IGNORE, ILIKE, IN, INCLUDES, INDEX, INDICES, INNER, INSERT, INSTANT, INTERSECT, INTERSECTS, INTO, IS, JOIN, KEY, KEYS, LAST, LATERAL, LEADING, LEFT, LIKE, LIMIT, LIST, LISTAGG, LOCAL, LOCAL_DATE, LOCAL_DATETIME, LOCAL_TIME, MAP, MATERIALIZED, MAX, MAXELEMENT, MAXINDEX, MEMBER, MICROSECOND, MILLISECOND, MIN, MINELEMENT, MININDEX, MINUTE, MONTH, NANOSECOND, NEW, NEXT, NO, NOT, NOTHING, NULLS, OBJECT, OF, OFFSET, OFFSET_DATETIME, ON, ONLY, OR, ORDER, OTHERS, OUTER, OVER, OVERFLOW, OVERLAY, PAD, PARTITION, PERCENT, PLACING, POSITION, PRECEDING, QUARTER, RANGE, RESPECT, RIGHT, ROLLUP, ROW, ROWS, SEARCH, SECOND, SELECT, SET, SIZE, SOME, SUBSTRING, SUM, THEN, TIES, TIME, TIMESTAMP, TIMEZONE_HOUR, TIMEZONE_MINUTE, TO, TRAILING, TREAT, TRIM, TRUNC, TRUNCATE, TYPE, UNBOUNDED, UNION, UPDATE, USING, VALUE, VALUES, WEEK, WHEN, WHERE, WITH, WITHIN, WITHOUT, YEAR, ZONED, NULL, TRUE, FALSE, STRING_LITERAL, JAVA_STRING_LITERAL, INTEGER_LITERAL, LONG_LITERAL, FLOAT_LITERAL, DOUBLE_LITERAL, BIG_INTEGER_LITERAL, BIG_DECIMAL_LITERAL, HEX_LITERAL, BINARY_LITERAL, '{ts', '{d', '{t', '+', '-', IDENTIFIER, QUOTED_IDENTIFIER; Bad HQL grammar [SELECT /* Multi-line comment
spanning multiple lines */
u FROM User u
WHERE /* Inline comment */ u.email IS NOT NULL
]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1826) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:607) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1690) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1635) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:913) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ~[spring-beans-6.2.10.jar:6.2.10]
... 21 common frames omitted
Caused by: org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract java.util.List org.example.repository.UserRepository.findUsersWithEmail(); Reason: At 1:7 and token '/', mismatched input '/', expecting one of the following tokens: '(', '[', ':', '{', '?', ID, VERSION, VERSIONED, NATURALID, FK, ALL, AND, ANY, AS, ASC, AVG, BETWEEN, BOTH, BREADTH, BY, CASE, CAST, COLLATE, COLUMN, CONFLICT, CONSTRAINT, CONTAINS, COUNT, CROSS, CUBE, CURRENT, CURRENT_DATE, CURRENT_INSTANT, CURRENT_TIME, CURRENT_TIMESTAMP, CYCLE, DATE, DATETIME, DAY, DEFAULT, DELETE, DEPTH, DESC, DISTINCT, DO, ELEMENT, ELEMENTS, ELSE, EMPTY, END, ENTRY, EPOCH, ERROR, ESCAPE, EVERY, EXCEPT, EXCLUDE, EXISTS, EXTRACT, FETCH, FILTER, FIRST, FOLLOWING, FOR, FORMAT, FROM, FULL, FUNCTION, GROUP, GROUPS, HAVING, HOUR, IGNORE, ILIKE, IN, INCLUDES, INDEX, INDICES, INNER, INSERT, INSTANT, INTERSECT, INTERSECTS, INTO, IS, JOIN, KEY, KEYS, LAST, LATERAL, LEADING, LEFT, LIKE, LIMIT, LIST, LISTAGG, LOCAL, LOCAL_DATE, LOCAL_DATETIME, LOCAL_TIME, MAP, MATERIALIZED, MAX, MAXELEMENT, MAXINDEX, MEMBER, MICROSECOND, MILLISECOND, MIN, MINELEMENT, MININDEX, MINUTE, MONTH, NANOSECOND, NEW, NEXT, NO, NOT, NOTHING, NULLS, OBJECT, OF, OFFSET, OFFSET_DATETIME, ON, ONLY, OR, ORDER, OTHERS, OUTER, OVER, OVERFLOW, OVERLAY, PAD, PARTITION, PERCENT, PLACING, POSITION, PRECEDING, QUARTER, RANGE, RESPECT, RIGHT, ROLLUP, ROW, ROWS, SEARCH, SECOND, SELECT, SET, SIZE, SOME, SUBSTRING, SUM, THEN, TIES, TIME, TIMESTAMP, TIMEZONE_HOUR, TIMEZONE_MINUTE, TO, TRAILING, TREAT, TRIM, TRUNC, TRUNCATE, TYPE, UNBOUNDED, UNION, UPDATE, USING, VALUE, VALUES, WEEK, WHEN, WHERE, WITH, WITHIN, WITHOUT, YEAR, ZONED, NULL, TRUE, FALSE, STRING_LITERAL, JAVA_STRING_LITERAL, INTEGER_LITERAL, LONG_LITERAL, FLOAT_LITERAL, DOUBLE_LITERAL, BIG_INTEGER_LITERAL, BIG_DECIMAL_LITERAL, HEX_LITERAL, BINARY_LITERAL, '{ts', '{d', '{t', '+', '-', IDENTIFIER, QUOTED_IDENTIFIER; Bad HQL grammar [SELECT /* Multi-line comment
spanning multiple lines */
u FROM User u
WHERE /* Inline comment */ u.email IS NOT NULL
]
at org.springframework.data.repository.query.QueryCreationException.create(QueryCreationException.java:101) ~[spring-data-commons-3.5.3.jar:3.5.3]
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lookupQuery(QueryExecutorMethodInterceptor.java:120) ~[spring-data-commons-3.5.3.jar:3.5.3]
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.mapMethodsToQuery(QueryExecutorMethodInterceptor.java:104) ~[spring-data-commons-3.5.3.jar:3.5.3]
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lambda$new$0(QueryExecutorMethodInterceptor.java:92) ~[spring-data-commons-3.5.3.jar:3.5.3]
at java.base/java.util.Optional.map(Optional.java:260) ~[na:na]
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.<init>(QueryExecutorMethodInterceptor.java:92) ~[spring-data-commons-3.5.3.jar:3.5.3]
at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:434) ~[spring-data-commons-3.5.3.jar:3.5.3]
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$4(RepositoryFactoryBeanSupport.java:350) ~[spring-data-commons-3.5.3.jar:3.5.3]
at org.springframework.data.util.Lazy.getNullable(Lazy.java:135) ~[spring-data-commons-3.5.3.jar:3.5.3]
at org.springframework.data.util.Lazy.get(Lazy.java:113) ~[spring-data-commons-3.5.3.jar:3.5.3]
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:356) ~[spring-data-commons-3.5.3.jar:3.5.3]
at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:132) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1873) ~[spring-beans-6.2.10.jar:6.2.10]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1822) ~[spring-beans-6.2.10.jar:6.2.10]
... 31 common frames omitted
Caused by: org.springframework.data.jpa.repository.query.BadJpqlGrammarException: At 1:7 and token '/', mismatched input '/', expecting one of the following tokens: '(', '[', ':', '{', '?', ID, VERSION, VERSIONED, NATURALID, FK, ALL, AND, ANY, AS, ASC, AVG, BETWEEN, BOTH, BREADTH, BY, CASE, CAST, COLLATE, COLUMN, CONFLICT, CONSTRAINT, CONTAINS, COUNT, CROSS, CUBE, CURRENT, CURRENT_DATE, CURRENT_INSTANT, CURRENT_TIME, CURRENT_TIMESTAMP, CYCLE, DATE, DATETIME, DAY, DEFAULT, DELETE, DEPTH, DESC, DISTINCT, DO, ELEMENT, ELEMENTS, ELSE, EMPTY, END, ENTRY, EPOCH, ERROR, ESCAPE, EVERY, EXCEPT, EXCLUDE, EXISTS, EXTRACT, FETCH, FILTER, FIRST, FOLLOWING, FOR, FORMAT, FROM, FULL, FUNCTION, GROUP, GROUPS, HAVING, HOUR, IGNORE, ILIKE, IN, INCLUDES, INDEX, INDICES, INNER, INSERT, INSTANT, INTERSECT, INTERSECTS, INTO, IS, JOIN, KEY, KEYS, LAST, LATERAL, LEADING, LEFT, LIKE, LIMIT, LIST, LISTAGG, LOCAL, LOCAL_DATE, LOCAL_DATETIME, LOCAL_TIME, MAP, MATERIALIZED, MAX, MAXELEMENT, MAXINDEX, MEMBER, MICROSECOND, MILLISECOND, MIN, MINELEMENT, MININDEX, MINUTE, MONTH, NANOSECOND, NEW, NEXT, NO, NOT, NOTHING, NULLS, OBJECT, OF, OFFSET, OFFSET_DATETIME, ON, ONLY, OR, ORDER, OTHERS, OUTER, OVER, OVERFLOW, OVERLAY, PAD, PARTITION, PERCENT, PLACING, POSITION, PRECEDING, QUARTER, RANGE, RESPECT, RIGHT, ROLLUP, ROW, ROWS, SEARCH, SECOND, SELECT, SET, SIZE, SOME, SUBSTRING, SUM, THEN, TIES, TIME, TIMESTAMP, TIMEZONE_HOUR, TIMEZONE_MINUTE, TO, TRAILING, TREAT, TRIM, TRUNC, TRUNCATE, TYPE, UNBOUNDED, UNION, UPDATE, USING, VALUE, VALUES, WEEK, WHEN, WHERE, WITH, WITHIN, WITHOUT, YEAR, ZONED, NULL, TRUE, FALSE, STRING_LITERAL, JAVA_STRING_LITERAL, INTEGER_LITERAL, LONG_LITERAL, FLOAT_LITERAL, DOUBLE_LITERAL, BIG_INTEGER_LITERAL, BIG_DECIMAL_LITERAL, HEX_LITERAL, BINARY_LITERAL, '{ts', '{d', '{t', '+', '-', IDENTIFIER, QUOTED_IDENTIFIER; Bad HQL grammar [SELECT /* Multi-line comment
spanning multiple lines */
u FROM User u
WHERE /* Inline comment */ u.email IS NOT NULL
]
at org.springframework.data.jpa.repository.query.BadJpqlGrammarErrorListener.syntaxError(BadJpqlGrammarErrorListener.java:53) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.antlr.v4.runtime.ProxyErrorListener.syntaxError(ProxyErrorListener.java:41) ~[antlr4-runtime-4.13.0.jar:4.13.0]
at org.antlr.v4.runtime.Parser.notifyErrorListeners(Parser.java:544) ~[antlr4-runtime-4.13.0.jar:4.13.0]
at org.antlr.v4.runtime.DefaultErrorStrategy.reportInputMismatch(DefaultErrorStrategy.java:327) ~[antlr4-runtime-4.13.0.jar:4.13.0]
at org.antlr.v4.runtime.DefaultErrorStrategy.reportError(DefaultErrorStrategy.java:139) ~[antlr4-runtime-4.13.0.jar:4.13.0]
at org.springframework.data.jpa.repository.query.HqlParser.selectClause(HqlParser.java:3578) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.data.jpa.repository.query.HqlParser.query(HqlParser.java:1330) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.data.jpa.repository.query.HqlParser.orderedQuery(HqlParser.java:1171) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.data.jpa.repository.query.HqlParser.queryExpression(HqlParser.java:540) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.data.jpa.repository.query.HqlParser.selectStatement(HqlParser.java:472) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.data.jpa.repository.query.HqlParser.ql_statement(HqlParser.java:402) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.data.jpa.repository.query.HqlParser.start(HqlParser.java:339) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.data.jpa.repository.query.JpaQueryEnhancer.parse(JpaQueryEnhancer.java:104) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.data.jpa.repository.query.JpaQueryEnhancer$HqlQueryParser.<init>(JpaQueryEnhancer.java:319) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.data.jpa.repository.query.JpaQueryEnhancer$HqlQueryParser.parseQuery(JpaQueryEnhancer.java:331) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.data.jpa.repository.query.JpaQueryEnhancer.forHql(JpaQueryEnhancer.java:167) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.data.jpa.repository.query.QueryEnhancerFactory.forQuery(QueryEnhancerFactory.java:68) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.data.jpa.repository.query.StringQuery.<init>(StringQuery.java:100) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.data.jpa.repository.query.StringQuery.<init>(StringQuery.java:79) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.data.jpa.repository.query.ExpressionBasedStringQuery.<init>(ExpressionBasedStringQuery.java:65) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.<init>(AbstractStringBasedJpaQuery.java:87) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.data.jpa.repository.query.SimpleJpaQuery.<init>(SimpleJpaQuery.java:65) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.data.jpa.repository.query.JpaQueryFactory.fromMethodWithQueryString(JpaQueryFactory.java:49) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$DeclaredQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:174) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:254) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:99) ~[spring-data-jpa-3.5.3.jar:3.5.3]
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lookupQuery(QueryExecutorMethodInterceptor.java:116) ~[spring-data-commons-3.5.3.jar:3.5.3]
... 43 common frames omitted
> Task :org.example.Main.main() FAILED
[Incubating] Problems report is available at: file:///C:/Work/JnJ/spring-data-jpa-issue/build/reports/problems/problems-report.html
Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
For more on this, please refer to https://docs.gradle.org/8.13/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.
4 actionable tasks: 3 executed, 1 up-to-date
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':org.example.Main.main()'.
> Process 'command 'C:\Users\KyryloRotan\.jdks\ms-17.0.15\bin\java.exe'' finished with non-zero exit value 1
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
BUILD FAILED in 11s
6:10:58 PM: Execution finished ':org.example.Main.main()'.
Expected behavior
JPQL comments inside @Query
should be accepted (as in 3.3.x), and the repository should initialize successfully.
Environment
- Java 17
- Spring Boot 3.5.5 / Spring Framework 6.2.x
- Spring Data JPA (version aligned with Boot 3.5.5)
- Hibernate ORM 6.6.26.Final
- H2 2.3.232
Metadata
Metadata
Assignees
Labels
type: regressionA regression from a previous releaseA regression from a previous release