Hibernate 6 with Spring Boot 3 issues

I am recently upgrading my project to Hibernate 6 with spring boot 3, I get below error

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'test.dl.nonxa.entityManagerFactory' defined in class path resource [test-dl-nonxa-entity-manager.xml]: jakarta/transaction/SystemException
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1806)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
		at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337)
		at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
		at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335)
		at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:205)
		at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:954)
		at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:625)
		at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
		at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
		at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456)
		at org.springframework.boot.SpringApplication.run(SpringApplication.java:335)
		at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:174)
		at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:154)
		at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:96)
		at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:171)
		at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4414)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		... 43 more
	Caused by: java.lang.NoClassDefFoundError: jakarta/transaction/SystemException
		at java.base/java.lang.Class.forName0(Native Method)
		at java.base/java.lang.Class.forName(Class.java:467)
		at org.jboss.logging.Logger.doGetMessageLogger(Logger.java:2571)
		at org.jboss.logging.Logger.getMessageLogger(Logger.java:2532)
		at org.jboss.logging.Logger.getMessageLogger(Logger.java:2518)
		at org.hibernate.internal.HEMLogging.messageLogger(HEMLogging.java:28)
		at org.hibernate.internal.HEMLogging.messageLogger(HEMLogging.java:24)
		at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<clinit>(EntityManagerFactoryBuilderImpl.java:142)
		at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:63)
		at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390)
		at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409)
		at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396)
		at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1853)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1802)
		... 61 more
	Caused by: java.lang.ClassNotFoundException: jakarta.transaction.SystemException
		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1332)
		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1144)
	

Here are the bean definations for the same

<bean id="test.dl.nonxa.entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
          p:dataSource-ref="test.dl.nonxa.dataSource" p:persistenceXmlLocation="classpath:test-dl-persistence-unit.xml"
          p:persistenceUnitName="${jpa.persistence.unit.name:fsp}"
          p:packagesToScan-ref="collaboration.dl.nonxa.entityManagerFactory.packagesToScan">
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/>
        </property>
        <property name="jpaProperties">
            <props>
                  ---------------
				  ---------------
				  ---------------
            </props>
        </property>
    </bean>
	
	<bean id="test.dl.nonxa.dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
          destroy-method="close" p:driverClassName="${test.global.database.jdbc.dataSource.driver}"
          p:url=
          p:username=
          p:validationQuery=
          p:poolPreparedStatements="true"
          p:removeAbandonedOnMaintenance=
          p:removeAbandonedOnBorrow=
          p:removeAbandonedTimeout=
          p:logAbandoned=
          p:maxOpenPreparedStatements=
          p:accessToUnderlyingConnectionAllowed=
          p:initialSize=
          p:maxTotal=
          p:maxIdle=
          p:testOnBorrow=
          p:testOnReturn=
          p:testWhileIdle=
          p:connectionProperties=
          p:timeBetweenEvictionRunsMillis=
          p:minEvictableIdleTimeMillis=
          p:softMinEvictableIdleTimeMillis=
          p:maxConnLifetimeMillis=
          p:autoCommitOnReturn=
          p:defaultAutoCommit=

This seems to be a classpath problem: your application cannot find the jakarta.transaction.SystemException class. Please check the versions of libraries used in your project are compatible with each other and have all the required dependencies.

1 Like

Classpath dependencies are upgraded to support hibernate 6/ Spring boot 3. May not be a classpath issue, can it be this due to dataSource config isssue ? Since I use Apache DBCP2 and it still has javax imports instead jakarta ?

DBCP2 and it still has javax imports instead jakarta

That does indeed sound like it might cause conflicts; you should always use compatible framework versions, in this case everything should support the Jakarta 3.1 spec.

Sorry but this is an Hibernate forum, so unless you have an hibernate-specific question I’m not sure I’ll be able to help you further than this.

1 Like