Hibernate: требуется использовать экземпляр AnnotationConfiguration ... ошибка - PullRequest
9 голосов
/ 19 сентября 2011

Я строю свой HibernateUtil следующим образом:

public class HibernateUtil {

        private static final SessionFactory sessionFactory;

        static {
            try { 
                // Create the SessionFactory from standard (hibernate.cfg.xml) config file.
                sessionFactory = new Configuration().configure().buildSessionFactory();

            } catch (Throwable ex) {
                // Log the exception. 
                System.err.println("Initial SessionFactory creation failed." + ex);
                throw new ExceptionInInitializerError(ex);
            }
        }

        public static SessionFactory getSessionFactory() {
            return sessionFactory;
        }
}

Поэтому, когда я пытаюсь выполнить команду HQL в HQL Editor в Eclipse (с Hibernate Tools), выдает следующую ошибку: enter image description here Почему это происходит?Это не должно изменять конфигурацию аннотации с помощью ConfigureAnnotation?

ОБНОВЛЕНИЕ

<?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.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password"><password></property>
        <property name="hibernate.connection.url">jdbc:mysql://<hostname>:3306/<schema></property>
        <property name="hibernate.connection.username">root</property>
        <!-- <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

        <!-- SQL -->
        <property name="hibernate.format_sql">true</property>
        <property name="hibernate.show_sql">true</property>
        <!-- C3P0 -->
        <property name="hibernate.c3p0.acquire_increment">2</property>
        <property name="hibernate.c3p0.max_size">20</property>
        <property name="hibernate.c3p0.min_size">5</property>
        <property name="hibernate.c3p0.timeout">180</property>
        <property name="hibernate.c3p0.idle_test_period">100</property>
        <!-- Classes -->
        <mapping class="com.suaparte.pojo.Area" />
    </session-factory>
</hibernate-configuration>

Заранее спасибо.

Ответы [ 10 ]

12 голосов
/ 12 января 2013

Если у вас есть эта ошибка, и вы используете версию hibernate> = 4.0, возможно, проблема в конфигурации консоли Hibernate.Конфигурации

и откройте созданную вами конфигурацию. На главной вкладке измените Тип с ядра на Аннотации.Вот скриншот: enter image description here

7 голосов
/ 14 сентября 2014

Просто измените Configuration () на AnnotationConfiguration ()

3 голосов
/ 16 мая 2015

Я изменил свой код с

Configuration cfg=new Configuration();
            cfg.configure("hibernate.cfg.xml");         
            SessionFactory factory=cfg.buildSessionFactory();

К

SessionFactory factory=new AnnotationConfiguration().configure("hibernate.cfg.xml").buildSessionFactory();

Также я не добавил аннотации "@Id" в своем классе POJO. После добавления «@Id» я полностью решил проблему.

2 голосов
/ 03 декабря 2015

Попробуйте загрузить версию jars 3.6.4 дистрибутива hibernate., Используйте версию jre1.6.0_07. сделав это, вы можете успешно создать новый объект конфигурации, как показано ниже, вместо использования AnnotationConfiguration().

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
2 голосов
/ 03 мая 2015

вы можете использовать AnnotationConfiguration () вместо Configuration ()

2 голосов
/ 19 сентября 2011

Попробуйте построить как:

AnnotationConfiguration().configure().buildSessionFactory();

Для этого вам нужно:

Hibernate annotations

С уважением.

Удо.

1 голос
/ 12 марта 2019

Используйте последнюю версию jar версии 5.x или выше.

1 голос
/ 21 августа 2017

Попробуйте изменить Configuration (). Configure (). BuildSessionFactory () на AnnotationConfiguration (). Configure (). BuildSessionFactory () и включите hibernate-annotations.jar в путь к классу

0 голосов
/ 01 февраля 2017
AnnotationConfiguration configuration=new AnnotationConfiguration();

    configuration.configure("hibernate.cfg.xml");

    SessionFactory factory=configuration.buildSessionFactory();

    Session session=factory.openSession();
0 голосов
/ 11 июня 2012

Создайте служебный класс, который возвращает объект SessionFactory:

public class HibernateUtil {

    private static SessionFactory sessionFactory;

    static {
       try {
           sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
        }
        catch(Throwable t) {
            throw new ExceptionInInitializerError(t);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public static void shutdown() {
        getSessionFactory().close();
    }
}

и назовите это в своем основном классе так:

SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.getCurrentSession();
...