'hibernate.dialect' должен быть установлен, если нет доступной ошибки соединения

При использовании Hibernate появляется следующая ошибка:

'hibernate.dialect' must be set when no Connection available

И я использую источник данных для подключения к базе данных.

Ответ 1

Проблема может заключаться в том, что вы не установили клиентскую библиотеку для базы данных, к которой вы пытаетесь подключиться.

У меня есть приложение Spring, у которого нет файла persistence.xml и, следовательно, нет объявления hibernate.dialect.

Как только я установил клиентскую библиотеку MySQL Connector/J, ошибка исчезла.

EDIT: Я также получил эту ошибку, когда сервер базы данных не был запущен. Что-то, что часто происходит сейчас, когда я запускаю свой MySQL-сервер через MAMP.

Ответ 2

Вы получите эту проблему, даже если у вас есть файлы конфигурации, имеющие правильное значение, но вы не настроите его в коде.

Я объяснял спящий режим, я забыл использовать configure() до buildSessionFactory(), чтобы получить ошибку.

Возможно, вы захотите перепроверить его.

Предыдущий код, который давал мне ошибку

SessionFactory factory = new Configuration().buildSessionFactory();

Измененный код Нет ошибки

SessionFactory factory = new Configuration().configure().buildSessionFactory();

Ответ 3

Эта ошибка в спящем режиме делает плохую работу, сообщая вам, что пошло не так с вашей попыткой соединения с базой данных.

В моем случае это было так же просто, как иметь неправильный пароль в конфигурационном файле.

Ответ 4

Вам нужно установить свойство

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>

Ответ 5

Только что столкнулся с этой проблемой. В моем случае это была конфигурация 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>

Ответ 6

У меня тоже была эта проблема. Причиной этого не было элемента <property name="dataSource" ref="dataSource" /> в определении <bean id="sessionFactory">.

Ответ 7

В некоторых случаях использование неправильного имени для базы данных приводит к этому Исключению. Спящий режим, по-видимому, пытается определить диалект, прежде чем делать что-либо еще, и поскольку БД не может быть достигнуто, сообщение об ошибке появляется из части, ответственной за выбор диалекта. Плохая передача сообщений об ошибках в Hibernate.

Ответ 8

В диалоговом окне конфигурации Hibernate имеется вкладка "Параметры", которую можно выбрать. В этом случае я использовал Oracle Enterprise Pack для Eclipse, у которого уже был сконфигурированный соединитель, но все еще получал ошибку. Выбрать вариант в списке было достаточно, чтобы решить.

Ответ 9

У меня были такие же ошибки. Моя проблема заключалась в том, что я поместил hibernate.properties под один package вместо src. Таким образом, мое решение моей проблемы было перемещением hibernate.properties из package в src.