-
Notifications
You must be signed in to change notification settings - Fork 110
Open
Labels
library-update-requestThe current metadata for a library does not work for the user.The current metadata for a library does not work for the user.
Description
Describe the bug
I'm having an issue after upgrading a Spring Boot 3 app to Spring Boot 4. The problem doesn't happen during compilation, but when running the app (Spring Boot 4 with Hibernate 7.1.9.Final).
Sample app:
I also filed spring-projects/spring-boot#48365, but was told to file here instead.
Steps to reproduce
1. Unzip the sample app
2. Run `docker run -it -p 5432:5432 -e POSTGRES_USER=fruits -e POSTGRES_PASSWORD=fruits postgres:17`
3. Run the app (`./mvnw -Dspring.sql.init.mode=always -Dspring.jpa.defer-datasource-initialization=true -Dspring.jpa.hibernate.ddl-auto=create-drop spring-boot:run`)
4. Hit the http://localhost:8080/fruits endpointExpected behavior
I would expect things to work normally
Logs and error messages
ERROR 31201 --- [nio-8080-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.RuntimeException: java.lang.ExceptionInInitializerError] with root cause
java.lang.IllegalArgumentException: Invalid logger interface org.hibernate.engine.internal.NaturalIdLogging (implementation not found)
at org.jboss.logging.Logger.doGetMessageLogger(Logger.java:2630) ~[springboot4:3.6.1.Final]
at org.jboss.logging.Logger.getMessageLogger(Logger.java:2536) ~[springboot4:3.6.1.Final]
at org.jboss.logging.Logger.getMessageLogger(Logger.java:2521) ~[springboot4:3.6.1.Final]
at org.hibernate.engine.internal.NaturalIdLogging.<clinit>(NaturalIdLogging.java:36) ~[na:na]
at org.hibernate.engine.internal.NaturalIdResolutionsImpl.cacheResolutionFromLoad(NaturalIdResolutionsImpl.java:72) ~[na:na]
at org.hibernate.sql.results.graph.entity.internal.EntityInitializerImpl.registerNaturalIdResolution(EntityInitializerImpl.java:1633) ~[na:na]
at org.hibernate.sql.results.graph.entity.internal.EntityInitializerImpl.initializeEntityInstance(EntityInitializerImpl.java:1584) ~[na:na]
at org.hibernate.sql.results.graph.entity.internal.EntityInitializerImpl.initializeInstance(EntityInitializerImpl.java:1464) ~[na:na]
at org.hibernate.sql.results.graph.entity.internal.EntityInitializerImpl.initializeInstance(EntityInitializerImpl.java:98) ~[na:na]
at org.hibernate.sql.results.internal.StandardRowReader.coordinateInitializers(StandardRowReader.java:239) ~[na:na]
at org.hibernate.sql.results.internal.StandardRowReader.readRow(StandardRowReader.java:136) ~[na:na]
at org.hibernate.sql.results.spi.ListResultsConsumer.read(ListResultsConsumer.java:245) ~[springboot4:7.1.9.Final]
at org.hibernate.sql.results.spi.ListResultsConsumer.readRows(ListResultsConsumer.java:235) ~[springboot4:7.1.9.Final]
at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:166) ~[springboot4:7.1.9.Final]
at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:33) ~[springboot4:7.1.9.Final]
at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:201) ~[na:na]
at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:100) ~[na:na]
at org.hibernate.sql.exec.spi.JdbcSelectExecutor.executeQuery(JdbcSelectExecutor.java:64) ~[springboot4:7.1.9.Final]
at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:138) ~[springboot4:7.1.9.Final]
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.lambda$new$1(ConcreteSqmSelectQueryPlan.java:146) ~[na:na]
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:455) ~[na:na]
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:388) ~[na:na]
at org.hibernate.query.sqm.internal.SqmQueryImpl.doList(SqmQueryImpl.java:386) ~[na:na]
at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:154) ~[springboot4:7.1.9.Final]
at org.hibernate.query.Query.getResultList(Query.java:121) ~[springboot4:7.1.9.Final]
at org.springframework.data.jpa.repository.support.SimpleJpaRepository.findAll(SimpleJpaRepository.java:414) ~[springboot4:4.0.0]
at java.base@25/java.lang.reflect.Method.invoke(Method.java:565) ~[springboot4:na]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359) ~[na:na]
at org.springframework.data.repository.core.support.RepositoryMethodInvoker$RepositoryFragmentMethodInvoker.lambda$new$0(RepositoryMethodInvoker.java:278) ~[na:na]
at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:169) ~[springboot4:4.0.0]
at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:158) ~[springboot4:4.0.0]
at org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:545) ~[springboot4:4.0.0]
at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:290) ~[springboot4:4.0.0]
at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:708) ~[springboot4:4.0.0]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[na:na]
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:171) ~[na:na]
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:146) ~[na:na]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[na:na]
at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:69) ~[na:na]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[na:na]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:370) ~[springboot4:7.0.1]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118) ~[springboot4:7.0.1]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[na:na]
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:135) ~[na:na]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[na:na]
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:166) ~[na:na]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[na:na]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:222) ~[na:na]
at jdk.proxy4/jdk.proxy4.$Proxy/s8244dec2.findAll(Unknown Source) ~[na:na]
at org.acme.rest.FruitController.getAll(FruitController.java:31) ~[springboot4:na]
at java.base@25/java.lang.reflect.Method.invoke(Method.java:565) ~[springboot4:na]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359) ~[na:na]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715) ~[na:na]
at org.acme.rest.FruitController$$SpringCGLIB$$0.getAll(<generated>) ~[springboot4:na]
at java.base@25/java.lang.reflect.Method.invoke(Method.java:565) ~[springboot4:na]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) ~[springboot4:7.0.1]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:190) ~[springboot4:7.0.1]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[springboot4:7.0.1]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934) ~[springboot4:7.0.1]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853) ~[springboot4:7.0.1]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86) ~[springboot4:7.0.1]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) ~[springboot4:7.0.1]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866) ~[springboot4:7.0.1]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1003) ~[springboot4:7.0.1]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892) ~[springboot4:7.0.1]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622) ~[springboot4:6.1]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874) ~[springboot4:7.0.1]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710) ~[springboot4:6.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128) ~[na:na]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[springboot4:11.0.14]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[na:na]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[springboot4:7.0.1]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[springboot4:7.0.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[na:na]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[springboot4:7.0.1]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[springboot4:7.0.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[na:na]
at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:110) ~[springboot4:7.0.1]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[springboot4:7.0.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[na:na]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:199) ~[springboot4:7.0.1]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[springboot4:7.0.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[na:na]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) ~[na:na]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:77) ~[na:na]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) ~[springboot4:11.0.14]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) ~[na:na]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) ~[springboot4:11.0.14]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) ~[na:na]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) ~[na:na]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) ~[na:na]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[springboot4:11.0.14]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) ~[na:na]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1778) ~[na:na]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[springboot4:11.0.14]
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:946) ~[na:na]
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:480) ~[na:na]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:57) ~[na:na]
at java.base@25/java.lang.Thread.runWith(Thread.java:1487) ~[springboot4:na]
at java.base@25/java.lang.Thread.run(Thread.java:1474) ~[springboot4:na]
at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:832) ~[springboot4:na]
at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:808) ~[springboot4:na]
Reproducer (optional)
No response
Additional context
No response
GraalVM version
GraalVM CE 25.0.1
Operating system
macOS
CPU architecture
AARCH64 (ARM64)
Metadata
Metadata
Assignees
Labels
library-update-requestThe current metadata for a library does not work for the user.The current metadata for a library does not work for the user.