HibernateTemplate выбрасывает java.lang.NoSuchMethodError: org.hibernate.Session.getFlushMode () - Spring4.2.6, Hibernate5.2

Я посмотрел вокруг аналогичных сообщений с SessionFactory и отсутствует Main (). Моя проблема не связана с ними. Не уверен, что какая-либо банка не соответствует. Я пытаюсь пример Spring4.2.6 с кодом Hibernate5.2 с использованием JDK8 и получаю это исключение:

Exception in thread "main" java.lang.NoSuchMethodError: org.hibernate.Session.getFlushMode()Lorg/hibernate/FlushMode;
at org.springframework.orm.hibernate5.HibernateTemplate.checkWriteOperationAllowed(HibernateTemplate.java:1125)
at org.springframework.orm.hibernate5.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:619)
at org.springframework.orm.hibernate5.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:616)
at org.springframework.orm.hibernate5.HibernateTemplate.doExecute(HibernateTemplate.java:341)
at org.springframework.orm.hibernate5.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:309)
at org.springframework.orm.hibernate5.HibernateTemplate.save(HibernateTemplate.java:616)
at com.nougain.springtraining.hibernate.CustomerDAOImpl.save(CustomerDAOImpl.java:37)
at com.nougain.springtraining.hibernate.Client_SpringHibernate.testSpringHibernate(Client_SpringHibernate.java:29)
at com.nougain.springtraining.hibernate.Client_SpringHibernate.main(Client_SpringHibernate.java:12)

Ниже приведены файлы jar, которые я использую:

<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="C:/Java Stuff/spring-framework-4.2.6.RELEASE/libs/spring-beans-4.2.6.RELEASE.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/spring-framework-4.2.6.RELEASE/libs/spring-core-4.2.6.RELEASE.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/spring-framework-4.2.6.RELEASE/libs/spring-context-4.2.6.RELEASE.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/Apache Commons/commons-logging-1.2/commons-logging-1.2.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/spring-framework-4.2.6.RELEASE/libs/spring-expression-4.2.6.RELEASE.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/jars/javax.inject.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/spring-framework-4.2.6.RELEASE/libs/spring-test-4.2.6.RELEASE.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/spring-framework-4.2.6.RELEASE/libs/spring-jdbc-4.2.6.RELEASE.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/spring-framework-4.2.6.RELEASE/libs/spring-orm-4.2.6.RELEASE.jar"/>
<classpathentry exported="true" kind="lib" path="C:/Java Stuff/hibernate-release-5.2.0.Final/lib/required/jboss-logging-3.3.0.Final.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/Oracle JDBC Driver/ojdbc7.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/junit-4.12/junit-4.12.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/junit-4.12/hamcrest-core-1.3.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/spring-framework-4.2.6.RELEASE/libs/spring-tx-4.2.6.RELEASE.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/jars/aopalliance-1.0.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/jars/aspectjweaver-1.8.9.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/spring-framework-4.2.6.RELEASE/libs/spring-aop-4.2.6.RELEASE.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/Apache Commons/commons-dbcp2-2.1.1/commons-dbcp2-2.1.1.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/Apache Commons/commons-pool2-2.4.2/commons-pool2-2.4.2.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/hibernate-release-5.2.0.Final/lib/required/hibernate-core-5.2.0.Final.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/hibernate-release-5.2.0.Final/lib/required/hibernate-jpa-2.1-api-1.0.0.Final.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/hibernate-release-5.2.0.Final/lib/required/geronimo-jta_1.1_spec-1.1.1.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/hibernate-release-5.2.0.Final/lib/required/dom4j-1.6.1.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/hibernate-release-5.2.0.Final/lib/required/hibernate-commons-annotations-5.0.1.Final.jar"/>
<classpathentry kind="lib" path="C:/Java Stuff/hibernate-release-5.2.0.Final/lib/required/classmate-1.3.0.jar"/>

Фрагмент кода DAOImpl:

import org.springframework.stereotype.Component;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate5.HibernateTemplate;

@Component("customerDAO")
public class CustomerDAOImpl implements CustomerDAO {
    @Autowired
    private HibernateTemplate hibernateTemplate;

    public CustomerDAOImpl() {
        System.out.println("___Created CustomerDAOImpl() object");
    }

    @Override
    public void save(Customer c) {
        hibernateTemplate.save(c);
    }
        ...
}

Мой файл конфигурации выглядит так:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <array>
            <value>bin/connection.properties</value>
        </array>
    </property>
</bean>

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
    <property name="driverClassName" value="${driver_class_name}"/>
    <property name="url" value="${url}"/>
    <property name="username" value="${username}"/>
    <property name="password" value="${password}"/>
    <property name="initialSize" value="${initial_size}"/>
    <property name="maxTotal" value="${max_size}"/> 
</bean>

<bean class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.format_sql">true</prop>
            <prop key="hibernate.use_sql_comments">true</prop>
            <prop key="hibernate.transaction.factory_class">
                org.hibernate.transaction.JDBCTransactionFactory
            </prop>
            <prop key="hibernate.hbm2ddl.auto">create</prop>
        </props>
    </property>
    <property name="mappingResources">
        <array>
            <value>Customer.hbm.xml</value>
        </array>
    </property>
</bean>

Спасибо за вашу помощь.

 rikica18 июл. 2016 г., 09:44
Соответствующий ответ был предоставлен здесь:http://stackoverflow.com/a/37613224/1035593.

Ответы на вопрос(1)

Решение Вопроса

торый был выпущен несколько дней назад), хотя ошибка, которую я получил, другая. Я все еще использую Hibernate 5.1.0 тогда.

Обратите внимание, что в Hibernate 5.1.0 вам нужны два jar-файла: hibernate-core и hibernate-entitymanager.

[EDIT] Spring 4.2.6 перечисляет Hibernate 5.0.9 в качестве необязательной зависимости, поэтому вам, вероятно, следует придерживаться этой версии, хотя 5.1.0 работает для меня нормально.

Spring 4.2.6, вероятно, не совместим с Hibernate 5.2.0, поскольку эта версия hibernate внесла значительные изменения, объединив ядро ​​hibernate с hibernate-entitymanager и hibernate-java8.

 Testo Testini20 окт. 2016 г., 19:32
Я думаю, что проблема исчезла, потому что вы скомпилировали 5.2 с ссылкой. Попробуйте скомпилировать с 5.1 и использовать с 5.2, я думаю, что это не сработает.
 ludwig1720 июл. 2016 г., 06:26
Принимая это как ответ с моим комментарием от 8 июня 2016 года.
 ludwig1708 июн. 2016 г., 15:05
Спасибо, Андре. Я сделал несколько изменений в программе, и она работала с Hibernate 5.0.9 AS WELL AS с 5.2.0. Я не знаю, что заставило проблему исчезнуть. Основные изменения, которые я сделал:code SessionFactory sessionFactory = hibernateTemplate.getSessionFactory (); Session session = sessionFactory.openSession (); Транзакция txn = session.beginTransaction (); // <- Транзакция необходима здесь для вставки. Но почему???? session.save (с); txn.commit ();

Ваш ответ на вопрос