Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Caused by: java.lang.NoSuchMethodException: org.hibernate.generator.internal.CurrentTimestampGeneration.<init>() #323

Open
rkudryashov opened this issue Jun 23, 2023 · 1 comment
Labels
bug Something isn't working

Comments

@rkudryashov
Copy link

rkudryashov commented Jun 23, 2023

Describe the bug
Spring Boot native app doesn't launch probably because of reflection hints for org.hibernate.generator.internal.CurrentTimestampGeneration are missing

To Reproduce
The bug can be reproduced using https://github.com/rkudryashov/sb-repro - the same project as for #324

Just comment https://github.com/rkudryashov/sb-repro/blob/master/sb-repro-1/src/main/kotlin/com/romankudryashov/sbrepro/SbRepro.kt#L13

Logs

2023-06-22T15:24:58.120Z  INFO 1 --- [           main] o.f.core.internal.command.DbMigrate      : Current version of schema "public": 1.0.1
2023-06-22T15:24:58.120Z  INFO 1 --- [           main] o.f.core.internal.command.DbMigrate      : Schema "public" is up to date. No migration necessary.
2023-06-22T15:24:58.124Z  INFO 1 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2023-06-22T15:24:58.125Z  INFO 1 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 6.2.5.Final
2023-06-22T15:24:58.125Z  WARN 1 --- [           main] org.hibernate.orm.deprecation            : HHH90000029: The [hibernate.bytecode.use_reflection_optimizer] configuration is deprecated and will be removed. Set the value to [true] to get rid of this warning
2023-06-22T15:24:58.148Z  INFO 1 --- [           main] o.h.b.i.BytecodeProviderInitiator        : HHH000021: Bytecode provider name : none
2023-06-22T15:24:58.149Z ERROR 1 --- [           main] j.LocalContainerEntityManagerFactoryBean : Failed to initialize JPA EntityManagerFactory: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.HibernateException: Could not instantiate generator of type 'org.hibernate.generator.internal.CurrentTimestampGeneration'
2023-06-22T15:24:58.149Z  WARN 1 --- [           main] w.s.c.ServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory': [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.HibernateException: Could not instantiate generator of type 'org.hibernate.generator.internal.CurrentTimestampGeneration'
2023-06-22T15:24:58.149Z  INFO 1 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2023-06-22T15:24:58.159Z  INFO 1 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
2023-06-22T15:24:58.159Z  INFO 1 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2023-06-22T15:24:58.159Z ERROR 1 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory': [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.HibernateException: Could not instantiate generator of type 'org.hibernate.generator.internal.CurrentTimestampGeneration'
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1770) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.0.10]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:598) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.0.10]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.0.10]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.0.10]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.0.10]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.0.10]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.0.10]
        at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.0.10]
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:931) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.0.10]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:608) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.0.10]
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:3.1.1]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:3.1.1]
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:436) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:3.1.1]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:312) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:3.1.1]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:3.1.1]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:3.1.1]
        at com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt.main(BookServiceApplication.kt:34) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:na]
Caused by: jakarta.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.HibernateException: Could not instantiate generator of type 'org.hibernate.generator.internal.CurrentTimestampGeneration'
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:421) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.0.10]
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.0.10]
        at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:352) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.0.10]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1816) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.0.10]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1766) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.0.10]
        ... 16 common frames omitted
Caused by: org.hibernate.HibernateException: Could not instantiate generator of type 'org.hibernate.generator.internal.CurrentTimestampGeneration'
        at org.hibernate.boot.model.internal.GeneratorBinder.instantiateGenerator(GeneratorBinder.java:425) ~[na:na]
        at org.hibernate.boot.model.internal.GeneratorBinder.lambda$generatorCreator$0(GeneratorBinder.java:362) ~[na:na]
        at org.hibernate.mapping.Property.createGenerator(Property.java:482) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.2.5.Final]
        at org.hibernate.tuple.entity.EntityMetamodel.buildGenerator(EntityMetamodel.java:479) ~[na:na]
        at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:313) ~[na:na]
        at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:499) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.2.5.Final]
        at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:140) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.2.5.Final]
        at java.base@17.0.7/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:na]
        at java.base@17.0.7/java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:na]
        at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:92) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.2.5.Final]
        at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:75) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.2.5.Final]
        at org.hibernate.metamodel.model.domain.internal.MappingMetamodelImpl.processBootEntities(MappingMetamodelImpl.java:247) ~[na:na]
        at org.hibernate.metamodel.model.domain.internal.MappingMetamodelImpl.finishInitialization(MappingMetamodelImpl.java:185) ~[na:na]
        at org.hibernate.internal.SessionFactoryImpl.initializeMappingModel(SessionFactoryImpl.java:320) ~[na:na]
        at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:270) ~[na:na]
        at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:431) ~[na:na]
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1455) ~[na:na]
        at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75) ~[na:na]
        at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:376) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.0.10]
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:6.0.10]
        ... 20 common frames omitted
Caused by: java.lang.InstantiationException: org.hibernate.generator.internal.CurrentTimestampGeneration
        at java.base@17.0.7/java.lang.Class.newInstance(DynamicHub.java:639) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:na]
        at org.hibernate.boot.model.internal.GeneratorBinder.instantiateGenerator(GeneratorBinder.java:419) ~[na:na]
        ... 39 common frames omitted
Caused by: java.lang.NoSuchMethodException: org.hibernate.generator.internal.CurrentTimestampGeneration.<init>()
        at java.base@17.0.7/java.lang.Class.getConstructor0(DynamicHub.java:3585) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:na]
        at java.base@17.0.7/java.lang.Class.newInstance(DynamicHub.java:626) ~[com.romankudryashov.outboxinbox.bookservice.BookServiceApplicationKt:na]
        ... 40 common frames omitted

System Info:

  • Spring Boot: 3.1.1
  • OS: host: Windows, container: Linux
  • Docker image is built with buildpacks
  • Plugin version: org.graalvm.buildtools.native:0.9.23
@wilkinsona
Copy link
Contributor

wilkinsona commented Jun 23, 2023

Hibernate will potentially try to reflectively load any class that's the value of the generatedBy attribute of the @ValueGenerationType annotation. @ValueGenerationType is used as a meta-annotation on several annotations including @CreationTimestamp and @UpdateTimestamp. The classes referenced in the generatedBy attribute are:

  • org.hibernate.generator.internal.CurrentTimestampGeneration
  • org.hibernate.generator.internal.GeneratedAlwaysGeneration
  • org.hibernate.generator.internal.GeneratedGeneration
  • org.hibernate.generator.internal.SourceGeneration (deprecated)
  • org.hibernate.generator.internal.TenantIdGeneration
  • org.hibernate.tuple.VmValueGeneration (deprecated)

@rkudryashov rkudryashov changed the title Spring Boot native app doesn't launch by: java.lang.NoSuchMethodException: org.hibernate.generator.internal.CurrentTimestampGeneration.<init>() Jun 23, 2023
@rkudryashov rkudryashov changed the title by: java.lang.NoSuchMethodException: org.hibernate.generator.internal.CurrentTimestampGeneration.<init>() Caused by: java.lang.NoSuchMethodException: org.hibernate.generator.internal.CurrentTimestampGeneration.<init>() Jun 23, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants