Open
Description
As requested by @snicoll , I'm moving this issue here.
It would be great to have a complete working sample with an @Audited
@Entity
associated with a RevisionRepository
in an application with @EnableEnversRepositories
, and having instruction to build a native image (that successfully runs).
I created a minimal spring-boot 3 application (using latest SNAPSHOT) with
- spring-boot-starter-data-jpa
- spring-data-envers
- h2
- an
@Audited @Entity
- a
RevisionRepository
- a simple
@RestController
Native image was build on windows with Graalvm 22.2.0 and x64 native build tools command prompt with mvnw -Pnative build
This app runs fine in the JVM, but native image won't start with
2022-10-11T08:59:15.327-10:00 INFO 26704 --- [ main] com.example.demo.DemoApplication : Starting DemoApplication using Java 17.0.4 on bravo-ch4mp with PID 26704 (D:\workspaces\libs\spring-addons\spring-data-jpa_gh-2662\target\demo.exe started by ch4mp in D:\workspaces\libs\spring-addons\spring-data-jpa_gh-2662)
2022-10-11T08:59:15.327-10:00 INFO 26704 --- [ main] com.example.demo.DemoApplication : No active profile set, falling back to 1 default profile: "default"
2022-10-11T08:59:15.420-10:00 INFO 26704 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (https)
2022-10-11T08:59:15.420-10:00 INFO 26704 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2022-10-11T08:59:15.420-10:00 INFO 26704 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.0.23]
2022-10-11T08:59:15.436-10:00 INFO 26704 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2022-10-11T08:59:15.436-10:00 INFO 26704 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 109 ms
2022-10-11T08:59:15.452-10:00 INFO 26704 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
2022-10-11T08:59:15.452-10:00 INFO 26704 --- [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.1.4.Final
2022-10-11T08:59:15.452-10:00 WARN 26704 --- [ main] org.hibernate.orm.deprecation : HHH90000021: Encountered deprecated setting [javax.persistence.sharedCache.mode], use [jakarta.persistence.sharedCache.mode] instead
2022-10-11T08:59:15.467-10:00 INFO 26704 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2022-10-11T08:59:15.467-10:00 INFO 26704 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection conn0: url=jdbc:h2:mem:sample user=SA
2022-10-11T08:59:15.467-10:00 INFO 26704 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
2022-10-11T08:59:15.467-10:00 INFO 26704 --- [ main] SQL dialect : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
2022-10-11T08:59:15.467-10:00 INFO 26704 --- [ main] o.h.e.boot.internal.EnversServiceImpl : Envers integration enabled? : true
2022-10-11T08:59:15.467-10:00 ERROR 26704 --- [ main] j.LocalContainerEntityManagerFactoryBean : Failed to initialize JPA EntityManagerFactory: Default-resolver threw exception
2022-10-11T08:59:15.467-10:00 WARN 26704 --- [ main] w.s.c.ServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory': Default-resolver threw exception
2022-10-11T08:59:15.467-10:00 INFO 26704 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
2022-10-11T08:59:15.467-10:00 INFO 26704 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
2022-10-11T08:59:15.467-10:00 INFO 26704 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
2022-10-11T08:59:15.467-10:00 ERROR 26704 --- [ main] o.s.boot.SpringApplication : Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory': Default-resolver threw exception
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1753) ~[demo.exe:6.0.0-SNAPSHOT]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) ~[demo.exe:6.0.0-SNAPSHOT]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) ~[demo.exe:6.0.0-SNAPSHOT]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[demo.exe:6.0.0-SNAPSHOT]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[demo.exe:6.0.0-SNAPSHOT]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[demo.exe:6.0.0-SNAPSHOT]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[demo.exe:6.0.0-SNAPSHOT]
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1131) ~[demo.exe:6.0.0-SNAPSHOT]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:906) ~[demo.exe:6.0.0-SNAPSHOT]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:584) ~[demo.exe:6.0.0-SNAPSHOT]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[demo.exe:3.0.0-SNAPSHOT]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:742) ~[demo.exe:3.0.0-SNAPSHOT]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:433) ~[demo.exe:3.0.0-SNAPSHOT]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:313) ~[demo.exe:3.0.0-SNAPSHOT]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1314) ~[demo.exe:3.0.0-SNAPSHOT]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[demo.exe:3.0.0-SNAPSHOT]
at com.example.demo.DemoApplication.main(DemoApplication.java:17) ~[demo.exe:na]
Caused by: org.hibernate.boot.registry.selector.spi.StrategySelectionException: Default-resolver threw exception
at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:224) ~[na:na]
at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveDefaultableStrategy(StrategySelectorImpl.java:181) ~[na:na]
at org.hibernate.envers.configuration.Configuration.resolveModifiedColumnNamingStrategy(Configuration.java:393) ~[demo.exe:6.1.4.Final]
at org.hibernate.envers.configuration.Configuration.<init>(Configuration.java:114) ~[demo.exe:6.1.4.Final]
at org.hibernate.envers.boot.internal.EnversServiceImpl.initialize(EnversServiceImpl.java:104) ~[na:na]
at org.hibernate.envers.boot.internal.AdditionalJaxbMappingProducerImpl.produceAdditionalMappings(AdditionalJaxbMappingProducerImpl.java:92) ~[demo.exe:6.1.4.Final]
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:329) ~[na:na]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1350) ~[demo.exe:6.1.4.Final]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1421) ~[demo.exe:6.1.4.Final]
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:66) ~[na:na]
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:376) ~[demo.exe:6.0.0-SNAPSHOT]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[demo.exe:6.0.0-SNAPSHOT]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[demo.exe:6.0.0-SNAPSHOT]
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:352) ~[demo.exe:6.0.0-SNAPSHOT]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1799) ~[demo.exe:6.0.0-SNAPSHOT]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1749) ~[demo.exe:6.0.0-SNAPSHOT]
... 16 common frames omitted
Caused by: org.hibernate.boot.registry.selector.spi.StrategySelectionException: Could not instantiate named strategy class [org.hibernate.envers.boot.internal.LegacyModifiedColumnNamingStrategy]
at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:245) ~[na:na]
at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveDefaultableStrategy(StrategySelectorImpl.java:181) ~[na:na]
at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveDefaultableStrategy(StrategySelectorImpl.java:168) ~[na:na]
at org.hibernate.envers.configuration.Configuration.lambda$resolveModifiedColumnNamingStrategy$0(Configuration.java:396) ~[demo.exe:6.1.4.Final]
at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:221) ~[na:na]
... 31 common frames omitted
Caused by: org.hibernate.boot.registry.selector.spi.StrategySelectionException: Could not instantiate named strategy class [org.hibernate.envers.boot.internal.LegacyModifiedColumnNamingStrategy]
at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.lambda$static$0(StrategySelectorImpl.java:42) ~[na:na]
at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:241) ~[na:na]
... 35 common frames omitted
Caused by: java.lang.InstantiationException: org.hibernate.envers.boot.internal.LegacyModifiedColumnNamingStrategy
at java.lang.Class.newInstance(DynamicHub.java:639) ~[demo.exe:na]
at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.lambda$static$0(StrategySelectorImpl.java:38) ~[na:na]
... 36 common frames omitted
Caused by: java.lang.NoSuchMethodException: org.hibernate.envers.boot.internal.LegacyModifiedColumnNamingStrategy.<init>()
at java.lang.Class.getConstructor0(DynamicHub.java:3585) ~[demo.exe:na]
at java.lang.Class.newInstance(DynamicHub.java:626) ~[demo.exe:na]
... 37 common frames omitted