vladmihalcea / hypersistence-optimizer

Hypersistence Optimizer allows you to get the most out of JPA and Hibernate. By scanning your application configuration and mappings, Hypersistence Optimizer can tell you what changes you need to do to speed up your data access layer.
https://vladmihalcea.com/hypersistence-optimizer/
Apache License 2.0
306 stars 43 forks source link

ClassNotFoundException: org.hibernate.type.descriptor.converter.internal.NamedEnumValueConverter #213

Closed saltwaterburning closed 9 months ago

saltwaterburning commented 9 months ago

Using SpringBoot v3.2.0-RC1 + Hibernate v6.3.1 I get a ClassNotFoundException. I see the class isn't available in the hibernate-core-6.3.1.Final JAR.

2023-10-28 11:28:54,357 ERROR o.s.b.SpringApplication [main] Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hypersistenceOptimizer' defined in com.pw.dome.ServerApp$HypersistenceConfiguration: Failed to instantiate [io.hypersistence.optimizer.HypersistenceOptimizer]: Factory method 'hypersistenceOptimizer' threw exception with message: org/hibernate/type/descriptor/converter/internal/NamedEnumValueConverter at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:654) ~[spring-beans-6.1.0-RC1.jar:6.1.0-RC1] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:642) ~[spring-beans-6.1.0-RC1.jar:6.1.0-RC1] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1336) ~[spring-beans-6.1.0-RC1.jar:6.1.0-RC1] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1166) ~[spring-beans-6.1.0-RC1.jar:6.1.0-RC1] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563) ~[spring-beans-6.1.0-RC1.jar:6.1.0-RC1] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) ~[spring-beans-6.1.0-RC1.jar:6.1.0-RC1] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) ~[spring-beans-6.1.0-RC1.jar:6.1.0-RC1] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.0-RC1.jar:6.1.0-RC1] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) ~[spring-beans-6.1.0-RC1.jar:6.1.0-RC1] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-6.1.0-RC1.jar:6.1.0-RC1] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) ~[spring-beans-6.1.0-RC1.jar:6.1.0-RC1] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:947) ~[spring-context-6.1.0-RC1.jar:6.1.0-RC1] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616) ~[spring-context-6.1.0-RC1.jar:6.1.0-RC1] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.2.0-RC1.jar:3.2.0-RC1] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:748) [spring-boot-3.2.0-RC1.jar:3.2.0-RC1] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:450) [spring-boot-3.2.0-RC1.jar:3.2.0-RC1] at org.springframework.boot.SpringApplication.run(SpringApplication.java:322) [spring-boot-3.2.0-RC1.jar:3.2.0-RC1] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1336) [spring-boot-3.2.0-RC1.jar:3.2.0-RC1] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1325) [spring-boot-3.2.0-RC1.jar:3.2.0-RC1] at com.pw.dome.ServerApp.main(ServerApp.java:40) [main/:?] Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.hypersistence.optimizer.HypersistenceOptimizer]: Factory method 'hypersistenceOptimizer' threw exception with message: org/hibernate/type/descriptor/converter/internal/NamedEnumValueConverter at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:171) ~[spring-beans-6.1.0-RC1.jar:6.1.0-RC1] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:650) ~[spring-beans-6.1.0-RC1.jar:6.1.0-RC1] ... 19 more Caused by: java.lang.NoClassDefFoundError: org/hibernate/type/descriptor/converter/internal/NamedEnumValueConverter at io.hypersistence.optimizer.hibernate.scanner.Hibernate62MappingScanner$8.execute(Hibernate62MappingScanner.java:395) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at io.hypersistence.optimizer.core.action.ActionExecutor.execute(ActionExecutor.java:68) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at io.hypersistence.optimizer.hibernate.scanner.Hibernate62MappingScanner.scanEntityBasedBasicAttribute(Hibernate62MappingScanner.java:388) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at io.hypersistence.optimizer.hibernate.scanner.Hibernate62MappingScanner$7.execute(Hibernate62MappingScanner.java:371) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at io.hypersistence.optimizer.core.action.ActionExecutor.execute(ActionExecutor.java:68) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at io.hypersistence.optimizer.hibernate.scanner.Hibernate62MappingScanner.scanEntityAttribute(Hibernate62MappingScanner.java:365) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at io.hypersistence.optimizer.hibernate.scanner.Hibernate62MappingScanner$1.lambda$execute$0(Hibernate62MappingScanner.java:115) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992) ~[?:?] at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762) ~[?:?] at io.hypersistence.optimizer.hibernate.scanner.Hibernate62MappingScanner$1.execute(Hibernate62MappingScanner.java:105) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at io.hypersistence.optimizer.core.action.ActionExecutor.execute(ActionExecutor.java:68) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at io.hypersistence.optimizer.hibernate.scanner.Hibernate62MappingScanner.scan(Hibernate62MappingScanner.java:102) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at io.hypersistence.optimizer.HypersistenceOptimizer.init(HypersistenceOptimizer.java:91) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at io.hypersistence.optimizer.HypersistenceOptimizer.(HypersistenceOptimizer.java:68) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at com.pw.dome.ServerApp$HypersistenceConfiguration.hypersistenceOptimizer(ServerApp.java:49) ~[main/:?] at com.pw.dome.ServerApp$HypersistenceConfiguration$$SpringCGLIB$$0.CGLIB$hypersistenceOptimizer$0() ~[main/:?] at com.pw.dome.ServerApp$HypersistenceConfiguration$$SpringCGLIB$$FastClass$$1.invoke() ~[main/:?] at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:258) ~[spring-core-6.1.0-RC1.jar:6.1.0-RC1] at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) ~[spring-context-6.1.0-RC1.jar:6.1.0-RC1] at com.pw.dome.ServerApp$HypersistenceConfiguration$$SpringCGLIB$$0.hypersistenceOptimizer() ~[main/:?] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:139) ~[spring-beans-6.1.0-RC1.jar:6.1.0-RC1] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:650) ~[spring-beans-6.1.0-RC1.jar:6.1.0-RC1] ... 19 more Caused by: java.lang.ClassNotFoundException: org.hibernate.type.descriptor.converter.internal.NamedEnumValueConverter at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[?:?] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[?:?] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?] at io.hypersistence.optimizer.hibernate.scanner.Hibernate62MappingScanner$8.execute(Hibernate62MappingScanner.java:395) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at io.hypersistence.optimizer.core.action.ActionExecutor.execute(ActionExecutor.java:68) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at io.hypersistence.optimizer.hibernate.scanner.Hibernate62MappingScanner.scanEntityBasedBasicAttribute(Hibernate62MappingScanner.java:388) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at io.hypersistence.optimizer.hibernate.scanner.Hibernate62MappingScanner$7.execute(Hibernate62MappingScanner.java:371) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at io.hypersistence.optimizer.core.action.ActionExecutor.execute(ActionExecutor.java:68) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at io.hypersistence.optimizer.hibernate.scanner.Hibernate62MappingScanner.scanEntityAttribute(Hibernate62MappingScanner.java:365) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at io.hypersistence.optimizer.hibernate.scanner.Hibernate62MappingScanner$1.lambda$execute$0(Hibernate62MappingScanner.java:115) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992) ~[?:?] at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762) ~[?:?] at io.hypersistence.optimizer.hibernate.scanner.Hibernate62MappingScanner$1.execute(Hibernate62MappingScanner.java:105) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at io.hypersistence.optimizer.core.action.ActionExecutor.execute(ActionExecutor.java:68) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at io.hypersistence.optimizer.hibernate.scanner.Hibernate62MappingScanner.scan(Hibernate62MappingScanner.java:102) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at io.hypersistence.optimizer.HypersistenceOptimizer.init(HypersistenceOptimizer.java:91) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at io.hypersistence.optimizer.HypersistenceOptimizer.(HypersistenceOptimizer.java:68) ~[hypersistence-optimizer-2.7.1-jakarta.jar:?] at com.pw.dome.ServerApp$HypersistenceConfiguration.hypersistenceOptimizer(ServerApp.java:49) ~[main/:?] at com.pw.dome.ServerApp$HypersistenceConfiguration$$SpringCGLIB$$0.CGLIB$hypersistenceOptimizer$0() ~[main/:?] at com.pw.dome.ServerApp$HypersistenceConfiguration$$SpringCGLIB$$FastClass$$1.invoke() ~[main/:?] at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:258) ~[spring-core-6.1.0-RC1.jar:6.1.0-RC1] at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) ~[spring-context-6.1.0-RC1.jar:6.1.0-RC1] at com.pw.dome.ServerApp$HypersistenceConfiguration$$SpringCGLIB$$0.hypersistenceOptimizer() ~[main/:?] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:139) ~[spring-beans-6.1.0-RC1.jar:6.1.0-RC1] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:650) ~[spring-beans-6.1.0-RC1.jar:6.1.0-RC1] ... 19 more

vladmihalcea commented 9 months ago

Support for Hibernate 6.3 was implemented by #211 and will be released soon.

Once I release the next version, this issue will be fixed automatically.