При использовании Hibernate появляется следующая ошибка:
'hibernate.dialect' must be set when no Connection available
И я использую источник данных для подключения к базе данных.
При использовании Hibernate появляется следующая ошибка:
'hibernate.dialect' must be set when no Connection available
И я использую источник данных для подключения к базе данных.
Проблема может заключаться в том, что вы не установили клиентскую библиотеку для базы данных, к которой вы пытаетесь подключиться.
У меня есть приложение Spring, у которого нет файла persistence.xml и, следовательно, нет объявления hibernate.dialect.
Как только я установил клиентскую библиотеку MySQL Connector/J, ошибка исчезла.
EDIT: Я также получил эту ошибку, когда сервер базы данных не был запущен. Что-то, что часто происходит сейчас, когда я запускаю свой MySQL-сервер через MAMP.
Вы получите эту проблему, даже если у вас есть файлы конфигурации, имеющие правильное значение, но вы не настроите его в коде.
Я объяснял спящий режим, я забыл использовать configure()
до buildSessionFactory()
, чтобы получить ошибку.
Возможно, вы захотите перепроверить его.
Предыдущий код, который давал мне ошибку
SessionFactory factory = new Configuration().buildSessionFactory();
Измененный код Нет ошибки
SessionFactory factory = new Configuration().configure().buildSessionFactory();
Эта ошибка в спящем режиме делает плохую работу, сообщая вам, что пошло не так с вашей попыткой соединения с базой данных.
В моем случае это было так же просто, как иметь неправильный пароль в конфигурационном файле.
Вам нужно установить свойство
hibernate.dialect
В конфигурации hibernate (persistence.xml или bean) значение зависит от вашей базы данных, например:
Postgres: org.hibernate.dialect.PostgreSQL82Dialect
Oracle: org.hibernate.dialect.Oracle10gDialect
Все возможные варианты прослушивания здесь
Например, пример persistence.xml выглядит так:
<persistence-unit>
...
<properties>
...
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
...
</properties>
</persistence-unit>
Только что столкнулся с этой проблемой. В моем случае это была конфигурация hibernate.dialect. Я добавил в конфигурацию SessionFatcory следующее в spring файле контекста:
<bean id="mySessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="annotatedClasses">
<list>
<value>com.testapp.service.geolocation.LocationData</value>
<value>com.testapp.service.profiles.Profile</value>
</list>
</property>
<property name="hibernateProperties">
<value>hibernate.dialect=org.hibernate.dialect.HSQLDialect</value>
</property>
</bean>
У меня тоже была эта проблема. Причиной этого не было элемента <property name="dataSource" ref="dataSource" />
в определении <bean id="sessionFactory">
.
В некоторых случаях использование неправильного имени для базы данных приводит к этому Исключению. Спящий режим, по-видимому, пытается определить диалект, прежде чем делать что-либо еще, и поскольку БД не может быть достигнуто, сообщение об ошибке появляется из части, ответственной за выбор диалекта. Плохая передача сообщений об ошибках в Hibernate.
В диалоговом окне конфигурации Hibernate имеется вкладка "Параметры", которую можно выбрать. В этом случае я использовал Oracle Enterprise Pack для Eclipse, у которого уже был сконфигурированный соединитель, но все еще получал ошибку. Выбрать вариант в списке было достаточно, чтобы решить.
У меня были такие же ошибки.
Моя проблема заключалась в том, что я поместил hibernate.properties
под один package
вместо src
.
Таким образом, мое решение моей проблемы было перемещением hibernate.properties
из package
в src
.