Как избежать «Не удалось определить диалект Hibernate для имени базы данных [H2]!»? - PullRequest
2 голосов
/ 07 сентября 2011

Я получаю эту ошибку при запуске grails run-app:

Ошибка выполнения начальной загрузки: Ошибка создания компонента с именем 'messageSource': Ошибка инициализации компонента;вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем'actionManager ': невозможно разрешить ссылку на компонент' sessionFactory 'при установке свойства компонента' sessionFactory ';вложенное исключение: org.springframework.beans.factory.BeanCreationException: Ошибка создания компонента с именем 'sessionFactory': невозможно разрешить ссылку на компонент 'hibernateProperties' при установке свойства компонента 'hibernateProperties';вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка создания компонента с именем 'hibernateProperties': невозможно разрешить ссылку на компонент 'dialectDetector' при установке свойства свойства '' с помощью ключа [hibernate.dialect];вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'dialectDetector': сбой вызова метода init;вложенное исключение: org.codehaus.groovy.grails.orm.hibernate.exceptions.CouldNotDetermineHibernateDialectException: не удалось определить диалект Hibernate для имени базы данных [H2]!

В соответствии DataSource.groovy :

dataSource {
  pooled = true
  driverClassName = "org.h2.Driver"
  username = "sa"
  password = ""
  // Adding this causes a different error:
  // dialect = org.hibernate.dialect.H2Dialect
}

hibernate {
  cache.use_second_level_cache = true
  cache.use_query_cache = true
  cache.provider_class = 'net.sf.ehcache.hibernate.EhCacheProvider'
}

environments {
  development {
    dataSource {
      dbCreate = "create-drop" // one of 'create', 'create-drop','update'
      url = "jdbc:h2:mem:devDB"
    }
  }
  test { // test-related stuff }
  production { // prod-related stuff }
}

Когда я явно предоставляю диалект, как указано выше (org.hibernate.dialect.H2Dialect), возникает эта ошибка:

Ошибка выполнения начальной загрузки: Ошибка создания компонентас именем 'messageSource': сбой инициализации компонента;вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем'actionManager ': невозможно разрешить ссылку на компонент' sessionFactory 'при установке свойства компонента' sessionFactory ';вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем 'sessionFactory': сбой вызова метода init;Вложенное исключение - java.lang.IncompatibleClassChangeError: Найден класс org.hibernate.cfg.Mappings, но интерфейс ожидался

Кто-нибудь знает, как справиться с этим?

(Сообщение об ошибке существует как http://jira.grails.org/browse/GRAILS-7994)

Ответы [ 5 ]

3 голосов
/ 06 января 2012

Это ошибка в плагине Joda Time. Подробности см. В упомянутом выпуске JIRA .

2 голосов
/ 10 июля 2013

Если jdk - это Java 7u25 и grails 2.2.1, может быть решением :: Grails внезапно выдает ошибку Не удалось определить диалект Hibernate для имени базы данных

Информация о том, что ошибка исправлена ​​в Граалях 2.2.3, верна.Я проверил это, и это сработало.Необходимо отметить следующее: ( При загрузке с помощью Spring Grails не может загрузиться с использованием Oracle JDK 1.7u25 ):

Надеюсь, вы найдете это полезным:)

1 голос
/ 21 декабря 2011

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

Если вы, как и я, обновляете существующий проект, я рекомендую сравнить файлы конфигурации вашего существующего проекта с файлами нового проекта 2.0. Сделав это, вы увидите, что файл конфигурации сборки должен включать плагин hibernate:

runtime ":hibernate:$grailsVersion"
0 голосов
/ 25 ноября 2013

Кажется, что проблема связана с версией JDK 7 (openjdk 7u25).

Альтернативой является использование Ubuntu PPA для Oracle JDK: https://launchpad.net/~webupd8team/+archive/java

, которая работала нормально дляЯ и решил проблему.

0 голосов
/ 08 сентября 2011

Какую версию Grails вы используете? Я считаю, что вы используете Grails 1.3.7.

В H2Dialet есть несколько ошибок из Hibernate.jar, который равен 3.3.1 в Grails 1.3.7, он включен в Hibernate 3.5 и Grails 2.0.

Мое решение в вашем DataSource.groovy:

dialect='org.hibernate.dialect.H2DialectPatch'

и загрузите класс Java отсюда: Исходный код , измените имя класса на H2DialectPatch, чтобы избежать путаницы, поместите его в папку src / java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...