我在使用grails run-app命令运行Grails 2.1.1应用程序时遇到无法创建所需bean的Hibernate错误。
错误的堆栈跟踪如下:
加载Grails 2.1.1 |配置类路径。 |环境设置为 发展..... |包装Grails应用程序.... |编译1 源文件|编译1个源文件..... |运行Grails application配置Spring Security UI ......完成了 配置Spring Security UI配置Spring Security Core ... ...完成配置Spring Security Core配置Spring 安全ACL ......完成了Spring Security ACL的配置 配置Spring Security Twitter ......完成配置 Spring Security Twitter
|错误2013-08-30 16:24:31,120 [localhost-startStop-1]错误 context.GrailsContextLoader - 执行bootstraps时出错:错误 使用名称' transactionManagerPostProcessor创建bean': bean的初始化失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 使用名称' transactionManager'创建bean:无法解析引用 to bean' sessionFactory'设置bean属性' sessionFactory&#39 ;; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为' sessionFactory'的bean:无法解析引用 bean' hibernateProperties'设置bean属性时 ' hibernateProperties&#39 ;;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 用名称' hibernateProperties'创建bean:无法解决 引用bean' dialectDetector'设置bean属性时 '属性'用键[hibernate.dialect];嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为' dialectDetector':调用init方法的bean 失败;嵌套异常是 org.codehaus.groovy.grails.orm.hibernate.exceptions.CouldNotDetermineHibernateDialectException: 无法确定数据库名称[H2]的Hibernate方言!
消息:使用名称创建bean时出错 ' transactionManagerPostProcessor':bean的初始化失败; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 使用名称' transactionManager'创建bean:无法解析引用 to bean' sessionFactory'设置bean属性' sessionFactory&#39 ;; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为' sessionFactory'的bean:无法解析引用 bean' hibernateProperties'设置bean属性时 ' hibernateProperties&#39 ;;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 用名称' hibernateProperties'创建bean:无法解决 引用bean' dialectDetector'设置bean属性时 '属性'用键[hibernate.dialect];嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 使用名称' dialectDetector创建bean':调用init方法 失败;嵌套异常是 org.codehaus.groovy.grails.orm.hibernate.exceptions.CouldNotDetermineHibernateDialectException: 无法确定数据库名称[H2]的Hibernate方言! 线|方法 - >> 334 | java.util.concurrent.FutureTask $ Sync中的innerRun - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | 166 |在java.util.concurrent.FutureTask中运行 | 1145 | java.util.concurrent.ThreadPoolExecutor中的runWorker | 615 |在java.util.concurrent.ThreadPoolExecutor $ Worker中运行 ^ 724 |跑 。 。 。 in java.lang.Thread由BeanCreationException引起:使用name创建bean时出错 ' transactionManager':无法解析对bean的引用 '的sessionFactory'设置bean属性' sessionFactory&#39 ;;嵌套 异常是org.springframework.beans.factory.BeanCreationException: 创建名称为' sessionFactory'的bean时出错:无法解析 引用bean' hibernateProperties'设置bean属性时 ' hibernateProperties&#39 ;;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 用名称' hibernateProperties'创建bean:无法解决 引用bean' dialectDetector'设置bean属性时 '属性'用键[hibernate.dialect];嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为' dialectDetector':调用init方法的bean 失败;嵌套异常是 org.codehaus.groovy.grails.orm.hibernate.exceptions.CouldNotDetermineHibernateDialectException: 无法确定数据库名称[H2]的Hibernate方言!
->> 334 | innerRun in java.util.concurrent.FutureTask$Sync - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | 166 | run in java.util.concurrent.FutureTask | 1145 | runWorker in java.util.concurrent.ThreadPoolExecutor | 615 | run in java.util.concurrent.ThreadPoolExecutor$Worker ^ 724 | run . . . in java.lang.Thread
由BeanCreationException引起:使用name创建bean时出错 ' sessionFactory':无法解析对bean的引用 ' hibernateProperties'设置bean属性时 ' hibernateProperties&#39 ;;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 用名称' hibernateProperties'创建bean:无法解决 引用bean' dialectDetector'设置bean属性时 '属性'用键[hibernate.dialect];嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为' dialectDetector':调用init方法的bean 失败;嵌套异常是 org.codehaus.groovy.grails.orm.hibernate.exceptions.CouldNotDetermineHibernateDialectException: 无法确定数据库名称[H2]的Hibernate方言!
我的 DataBaseConfig .groovy的设置如下:
dataSource {
pooled = true
driverClassName = "org.h2.Driver"
username = "sa"
password = ""
}
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = false
cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}
// environment specific settings
environments {
development {
dataSource {
dbCreate = "update"
url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
}
}
我们非常感谢早期的回应。
由于
答案 0 :(得分:0)
遇到过同样的问题。
问题似乎与您正在运行的grails版本有关。 对于jdk 1.7.025>的版本这似乎出现在版本2.2.3以下的Grails上。
我们降级为较低版本的jdk,并且没有出现问题。