一尘不染

如何避免“无法确定数据库名称[H2]的休眠方言!”?

hibernate

运行时出现此错误grails run-app

执行引导程序时出错:创建名称为’messageSource’的bean时出错:初始化bean失败;嵌套的异常是org.springframework.beans.factory.BeanCreationException:创建名称为’transactionManager’的bean时出错:设置bean属性’sessionFactory’时无法解析对bean’sessionFactory’的引用;嵌套的异常是org.springframework.beans.factory.BeanCreationException:创建名称为’sessionFactory’的bean时出错:在设置bean属性’hibernateProperties’时无法解析对bean’hibernateProperties’的引用;嵌套的异常是org.springframework.beans.factory.BeanCreationException:创建名称为“
hibernateProperties”的bean时出错:无法解析对bean“ dialectDetector”的引用
同时使用键[hibernate.dialect]设置bean属性“
properties”;嵌套的异常是org.springframework.beans.factory.BeanCreationException:创建名称为’dialectDetector’的bean时出错:调用init方法失败;嵌套的异常是org.codehaus.groovy.grails.orm.hibernate.exceptions.CouldNotDetermineHibernateDialectException:无法确定数据库名称[H2]的Hibernate方言!

根据 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’的bean时出错:初始化bean失败;嵌套的异常是org.springframework.beans.factory.BeanCreationException:创建名称为’transactionManager’的bean时出错:在设置bean属性’sessionFactory’时无法解析对bean’sessionFactory’的引用;嵌套的异常是org.springframework.beans.factory.BeanCreationException:创建名称为’sessionFactory’的bean时出错:调用init方法失败;嵌套的异常是java.lang.IncompatibleClassChangeError:找到了类org.hibernate.cfg.Mappings,但是期望使用接口

有人知道如何应对吗?

(错误报告以http://jira.grails.org/browse/GRAILS-7994形式存在)


阅读 205

收藏
2020-06-20

共1个答案

一尘不染

这是Joda时间插件中的错误。有关详细信息,请参见提到的JIRA问题

2020-06-20