Диалект не устанавливается в спящем режиме - PullRequest
4 голосов
/ 25 июля 2011

Я использую Hibernate 3 и MySQL5.5.

Я новичок в hibernate и получаю следующее исключение

Exception in thread "main" org.hibernate.HibernateException: 'hibernate.dialect' must be set when no Connection available
    at org.hibernate.dialect.resolver.DialectFactory.buildDialect(DialectFactory.java:106)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:152)

Я установил свойство Dialect в hibernate.файл cfg.xml.Я перепробовал множество комбинаций

<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> 
<property name="DIALECT">org.hibernate.dialect.MySQL5Dialect</property>

Какое собственно имя свойства?Hibernate.dialect или только диалект?Какие могут быть возможные значения свойств?

Я добавляю еще немного информации, я использовал

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

, как это предлагается в ответах ниже.

Я даже не собираю никакого кодапросто пытаюсь создать простую конфигурацию:

Configuration cfg = new Configuration().addClass(Employee.class);
sessionFactory = cfg.buildSessionFactory();

Ниже приведен фактический файл конфигурации

<?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="connection.url">jdbc:mysql://localhost/test</property>
    <property name="connection.username">root</property>
    <property name="connection.password">root1234</property>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="show_sql">true</property>
    <property name="format_sql">true</property>
    <property name="hbm2ddl.auto">create</property>
    <!-- JDBC connection pool (use the built-in) -->
    <property name="connection.pool_size">1</property>
    <property name="current_session_context_class">thread</property>
    <!-- Mapping files will go here.... -->
  </session-factory>
</hibernate-configuration>

Я подозреваю, что файл hibernate.cfg.xml не найден?Я поместил его в тот же пакет, где находится исходный код для Employee.class.Infact перемещения вокруг этого файла вызывает ту же ошибку, поэтому он на самом деле не найден :-( Где его сохранить? Это отдельная программа тестирования: - (

Ответы [ 6 ]

6 голосов
/ 25 июля 2011

Ваша первая или вторая строка должна работать.Второй способ с использованием только «диалекта» - это путь, показанный в справочнике Hibernate .Если вы все еще получаете эту ошибку, это говорит о том, что у вас может быть что-то еще происходит.Как вы строите SessionFactory?Вы уверены, что он находит ваш hibernate.cfg.xml?

Редактировать: Исходя из вашего обновления, вы не говорите Hibernate настраивать себя из файла конфигурации.Вы создаете свою собственную конфигурацию и используете ее.Вам нужно выбрать один или другой.Либо сделайте это программно , либо сделайте это через XML .

5 голосов
/ 08 февраля 2012

Я тоже столкнулся с той же проблемой Ранее мой код был:

private final static SessionFactory factory = new Configuration()
        .configure().buildSessionFactory();

теперь я изменил его на

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

И ошибка исчезла. Я думаю, что по умолчанию он ищет только файл hibernate.properties.

2 голосов
/ 25 июля 2011

Имя свойства hibernate.dialect

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

Я не знаю, есть ли что-то вроде MySQL5Dialect .

Более подробную информацию см. В документации .

0 голосов
/ 09 декабря 2015

Я также столкнулся с той же ошибкой - org.hibernate.HibernateException: диалект не был установлен.Установите свойство hibernate.dialect

Я забыл написать cfg = cfg.configure ();при создании экземпляра для класса сохраняемости. Теперь он работает нормально.

Configuration cfg=new Configuration();
              cfg=cfg.configure();
        sfactory=cfg.buildSessionFactory();
0 голосов
/ 12 февраля 2014

В моем случае я решил эту проблему, поместив библиотеки jars, связанные с hibernate, в WEB-INF \ lib.

0 голосов
/ 08 февраля 2014

Проблема только в настройке конфигурации.

Метод класса configure() класса конфигурации может получить путь к файлу конфигурации hibernate (hibernate.cfg.xml).

Просто укажите путь.Я думаю, что проблема будет решена.

...