2015-09-27 3 views
1

Я получаю эту ошибку:java.lang.NoSuchMethodError при закрытии сессии Hibernate в приложении Java Swing-

Exception in thread "AWT-EventQueue-0" java.lang.NoSuchMethodError: org.hibernate.Session.close()Ljava/sql/Connection; 

При вызове этой функции:

private static SessionFactory factory; 

public static void insert(Object model) { 

    factory = new Configuration().configure().buildSessionFactory(); 
    Session session = factory.openSession(); 
    Transaction tx = session.beginTransaction(); 

    try { 

     session.save(model); 
     tx.commit(); 

    } catch (HibernateException exc) { 
     if (tx != null) 
      tx.rollback(); 
     exc.printStackTrace(); 
    } finally { 
     session.close(); // here is when the error occurs 
    } 
} 

Я считаю, я импортировал все необходимые банки от /lib/required/ в каталоге Hibernate 5.0.1.

Файл hibernate.cfx.xml также настроен правильно:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
     <property name="hibernate.connection.url">jdbc:mysql://localhost:3307/test</property> 
     <property name="hibernate.connection.username">root</property> 
     <property name="hibernate.connection.password"></property> 
     <property name="hibernate.show_sql">true</property> 
     <property name="hibernate.current_session_context_class">thread</property> 
     <property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property > 

     <mapping resource="customer.hbm.xml"/> 
    </session-factory> 
</hibernate-configuration> 

И customer.hbm.xml отображение файла:

<class name="com.test.app.model.Customer" table="customer"> 

    <meta attribute="class-description"> 
     Test. 
    </meta> 

    <id column="id" name="id" type="int"> 
     <generator class="native"/> 
    </id> 

    <property name="name"   column="name"    type="string"/> 
    <property name="phoneNumbers" column="phone_numbers"  type="string"/> 
    <property name="emailAddresses" column="email_addresses" type="string"/> 
    <property name="address"  column="address"   type="string"/> 
    <property name="note"   column="note"    type="string"/> 
</class> 

В чем может быть проблема?

+0

Какие у других библиотек могут быть ваши проекты? –

+0

хорошо, у меня также есть Абсолютная компоновка и MySQL JDBC Driver. –

ответ

3

Похоже, у вас есть два hibernate-core-5.0.1.Final.jar в вашем пути к классу. Например, если вы запускаете проект в среде IDE и добавляете другой проект с hibernate-core-5.0.1.Final.jar в свой путь к классам.

P.S. Пожалуйста, не настраивайте фабрику сеансов в каждой вставке и отката на любом исключении, а не только на HibernateException. Вы можете увидеть, как правильно работать с транзакциями here, и вы можете найти простой пример консольного проекта с использованием Hibernate 5 и MySQL here.

+0

FYI, обе ссылки в этом ответе не работают. –

+0

@ пользователь2200690 спасибо. Исправлена. –

Смежные вопросы