NoClassDefFoundError org.hibernate.engine.spi.SharedSessionContractImplementor при использовании hibernate 5.1.0 с Spring 5.1.3 - PullRequest
0 голосов
/ 11 января 2019

При использовании Hibernate 5.1.0 в Spring 5.1.3 вижу NoClassDefFoundError

Сообщается об ошибке пропущенного класса SharedSessionContractImplementor. Это допустимо, потому что это было добавлено в Hibernate 5.2.0 Однако проект настроен для использования 5.1.0.

pom.xml

<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.1.0.Final</version>

<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>5.1.3.RELEASE</version>

Контекст

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean" scope="singleton">
    <property name="hibernateProperties">
        <bean class="org.springframework.beans.factory.config.PropertyPathFactoryBean">
            <property name="targetBeanName" value="appHibernateProperties"/>
            <property name="propertyPath" value="hibernateProperties"/>
        </bean>
    </property>
    <property name="configLocations">
        <list>
            <value>classpath*:hibernateComponentMappings.cfg.xml</value>
        </list>
    </property>
</bean>

<alias name="sessionFactory" alias="sessionFactoryReporting"/>

<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
    <property name="sessionFactory">
        <ref bean="sessionFactory"/>
    </property>
</bean>

Исключение

Caused by: org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: org/hibernate/engine/spi/SharedSessionContractImplementor
        at org.springframework.orm.hibernate5.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:577)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:378)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:474)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:289)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)
        at com.xxx.xxx.dao.xxx$$EnhancerBySpringCGLIB$$43e03fc6.getResourceToExtensionMapForCategory(<generated>)
        at com.xx.xx.xx.xx.loadMappings(JuelSmpExtensionLoader.java:83)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:363)
        at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:307)
        at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136)
        ... 66 more
Caused by: java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: org/hibernate/engine/spi/SharedSessionContractImplementor
        at org.springframework.orm.hibernate5.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:544)
        ... 81 more
Caused by: java.lang.NoClassDefFoundError: org/hibernate/engine/spi/SharedSessionContractImplementor
        ... 82 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.engine.spi.SharedSessionContractImplementor
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

1 Ответ

0 голосов
/ 15 января 2019

Это была проблема с HibernateTransactionManager в spring 5.1.3 Который фиксируется в spring 5.1.4 согласно https://github.com/spring-projects/spring-framework/issues/22089

Таким образом, обновление spring to 5.1.4 решит эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...