Диалект не устанавливается в спящем режиме
Я использую Hibernate 3 и MySQL5.5.
Я новичок в спящем режиме и получаю следующее исключение
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 ответов
Ваша первая или вторая строка должны работать. Второй способ, только с "диалектом" - это путь, показанный в справочнике Hibernate. Если вы все еще получаете эту ошибку, это говорит о том, что у вас может быть что-то еще происходит. Как вы строите SessionFactory? Вы уверены, что он находит ваш hibernate.cfg.xml?
Изменить: на основе вашего обновления вы не говорите Hibernate для настройки из файла конфигурации. Вы создаете свою собственную конфигурацию и используете ее. Вам нужно выбрать один или другой. Либо делайте это программно, либо делайте это через XML.
Я также столкнулся с той же проблемой. Ранее мой код был:
private final static SessionFactory factory = new Configuration()
.configure().buildSessionFactory();
теперь я изменил это на
private final static SessionFactory factory = new Configuration()
.configure("hibernate.cfg.xml").buildSessionFactory();
И ошибка исчезла. Я думаю, что по умолчанию он ищет только файл hibernate.properties.
Имя свойства hibernate.dialect
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
Я не знаю, есть ли что-то вроде MySQL5Dialect.
Пожалуйста, обратитесь к документации для получения более подробной информации.
Я также столкнулся с той же ошибкой - org.hibernate.HibernateException: диалект не был установлен. Установите свойство hibernate.dialect
Я забыл написать cfg=cfg.configure(); при создании экземпляра для персистентного класса. Теперь он работает нормально.
Configuration cfg=new Configuration();
cfg=cfg.configure();
sfactory=cfg.buildSessionFactory();
Проблема только в настройке конфигурации.
configure()
метод класса конфигурации может получить путь к файлу конфигурации hibernate (hibernate.cfg.xml)
,
Просто скажи ему путь. Я думаю, что проблема будет решена.
В моем случае я решил эту проблему, поместив jars libs, связанные с hibernate, в WEB-INF\lib.