Comment From: snicoll
Unfortunately the upgrade breaks on native:
Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory': null
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1802)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:601)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:336)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:296)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:334)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:970)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:756)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:443)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:319)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1365)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354)
at org.springframework.samples.petclinic.PetClinicApplication.main(PetClinicApplication.java:38)
Caused by: java.lang.ExceptionInInitializerError
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:158)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:82)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:130)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:238)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:215)
at org.hibernate.boot.model.relational.Database.<init>(Database.java:45)
at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.getDatabase(InFlightMetadataCollectorImpl.java:226)
at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:194)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:171)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1431)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1502)
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:66)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:419)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:400)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1849)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1798)
... 15 more
Caused by: java.lang.IllegalArgumentException: Invalid logger interface org.hibernate.internal.log.ConnectionInfoLogger (implementation not found)
at org.jboss.logging.Logger.doGetMessageLogger(Logger.java:2627)
at org.jboss.logging.Logger.getMessageLogger(Logger.java:2582)
at org.jboss.logging.Logger.getMessageLogger(Logger.java:2549)
at org.hibernate.internal.log.ConnectionInfoLogger.<clinit>(ConnectionInfoLogger.java:38)
... 34 more
Comment From: wilkinsona
In think we should proceed with the upgrade. The native problem can be worked around with some additional reachability metadata and getting feedback on the upgrade in general outweighs that inconvenience, IMO.
Comment From: sdeleuze
Be aware there are 2 issues.
The first one reported by Stéphane can be fixed via a updated generation of reachability metadata with Hibernate 6.6.0.Final with the related script crafted by @christophstrobl. Not a big deal, I will shortly created a related PR.
The second one is more serious, it seems to break org.hibernate.bytecode.internal.bytebuddy.BytecodeProviderImpl exclusion and crashes Petclinic at startup, I am not sure yet why this happens with Hibernate 6.6 and not 6.5. I will provide an update when I find.
Comment From: wilkinsona
Thanks, @sdeleuze. I'd still prefer to upgrade now, even if it's broken for native users. We can mention that in the release notes and I'd rather get more feedback on the upgrade during the 3.4 milestone phase from those not using native.
Comment From: sdeleuze
We are going to have a deeper look with the GraalVM team and @mhalbritter to try to understand what happens using this repro.
The metadata PR fixing the issue reported by @snicoll is https://github.com/oracle/graalvm-reachability-metadata/pull/523.
Comment From: mhalbritter
Christian Wimmer found the issue - @sdeleuze will update the PR and then it should work again on native.
Comment From: sdeleuze
Done, I have asked @christophstrobl review.
Comment From: sdeleuze
GraalVM metadata 0.3.9 has been released with Hibernate 6.6.0.Final support. There is not yet a new Native Build Tools version using it by default, but maybe @mhalbritter @wilkinsona @snicoll you can mention it can be used for native support with Hibernate in Spring Boot 3.4.0-M2 release notes.
I have asked to the GraalVM team to release a new version of NBT at least one week before 3.4.0-M3 release.
Comment From: quaff
Can we backport it to 3.3.x? since 6.5 is not supported now, see https://hibernate.org/orm/releases/