Удалите диалектную линию из вашей конфигурации полностью.
Hibernate может определить, какой диалект использовать на основе базовых метаданных базы данных при условии, что вы дадите ему правильное имя пользователя/пароль. У меня никогда не было проблемы с Hibernate, автоматически определяющим мою версию базы данных. Это особенно полезно для MySQL, поскольку MySQL имеет разные версии диалектов, которые он может использовать.
Если вы видите следующее исключение
org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set
Это означает, что ваше имя пользователя/пароль неверен, и Hibernate не может подключиться к базе данных, на самом деле читать метаданные, чтобы выбрать свой собственный диалект.
Я обнаружил, что проще настроить таблицы базы данных с помощью SQL-скриптов, а затем получить Hibernate до validate
вашей схемы. Получение Hibernate для создания любой структуры базы данных (с использованием create-update
или просто update
) не рекомендуется для рабочей среды, поскольку вы теряете контроль над настройкой базы данных.
TL; DR: Позвольте Hibernate выбрать свой собственный диалект. Это сэкономит вам часы суеты.
Спасибо за ваш ответ, я уже удалил строку диалекта из моего persistence.xml, но hibernate все равно генерирует мне базу данных хранилища InnoDB !. Если я также удалю это: <свойство name = "hibernate.show_sql" value = "true" /> \t \t \t <свойство name = "hibernate.hbm2ddl.auto" value = "update" />. Спасибо – BOSS
Нет, если Hibernate использует диалоги InnoDB, то ваша база данных использует InnoDB Storage Engine, а не старый механизм хранения ISAM. Его настройка в вашей базе данных. Но ISAM - это более старая технология, чем InnoDB. – JamesENL