【发布时间】:2013-09-03 02:35:00
【问题描述】:
在使用 grails run-app 命令运行 Grails 2.1.1 应用程序时,我收到 Hibernate 错误,无法创建所需的 bean。
错误的堆栈跟踪如下:
加载 Grails 2.1.1 |配置类路径。 |环境设置为 发展..... |打包 Grails 应用程序.... |编译 1 源文件 |编译1个源文件..... |运行圣杯 应用程序配置 Spring Security UI ... ...完成 配置 Spring Security UI 配置 Spring Security Core ... ... 完成配置 Spring Security Core 配置 Spring 安全ACL ... ... 完成配置Spring Security ACL 配置 Spring Security Twitter ... ... 配置完成 Spring Security 推特
|错误 2013-08-30 16:24:31,120 [localhost-startStop-1] 错误 context.GrailsContextLoader - 执行引导程序时出错:错误 创建名为“transactionManagerPostProcessor”的bean: bean初始化失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“transactionManager”的bean:无法解析引用 在设置 bean 属性 'sessionFactory' 时 bean 'sessionFactory'; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“sessionFactory”的bean:无法解析对 bean 'hibernateProperties' 同时设置 bean 属性 '休眠属性';嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“hibernateProperties”的bean:无法解析 在设置 bean 属性时引用 bean 'dialectDetector' 带有键 [hibernate.dialect] 的“属性”;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“dialectDetector”的bean:调用init方法 失败的;嵌套异常是 org.codehaus.groovy.grails.orm.hibernate.exceptions.CouldNotDetermineHibernateDialectException: 无法确定数据库名称 [H2] 的 Hibernate 方言!
消息:使用名称创建 bean 时出错 'transactionManagerPostProcessor': bean 初始化失败; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“transactionManager”的bean:无法解析引用 在设置 bean 属性 'sessionFactory' 时 bean 'sessionFactory'; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“sessionFactory”的bean:无法解析对 bean 'hibernateProperties' 同时设置 bean 属性 '休眠属性';嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“hibernateProperties”的bean:无法解析 在设置 bean 属性时引用 bean 'dialectDetector' 带有键 [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 |跑步 。 . .在由 BeanCreationException 引起的 java.lang.Thread 中:使用名称创建 bean 时出错 “transactionManager”:无法解析对 bean 的引用 'sessionFactory' 同时设置 bean 属性 'sessionFactory';嵌套的 例外是 org.springframework.beans.factory.BeanCreationException: 创建名为“sessionFactory”的 bean 时出错:无法解析 在设置 bean 属性时引用 bean 'hibernateProperties' '休眠属性';嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“hibernateProperties”的bean:无法解析 在设置 bean 属性时引用 bean 'dialectDetector' 带有键 [hibernate.dialect] 的“属性”;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“dialectDetector”的bean:调用init方法 失败的;嵌套异常是 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 引起:使用名称创建 bean 时出错 “sessionFactory”:无法解析对 bean 的引用 设置 bean 属性时的“hibernateProperties” '休眠属性';嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“hibernateProperties”的bean:无法解析 在设置 bean 属性时引用 bean 'dialectDetector' 带有键 [hibernate.dialect] 的“属性”;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“dialectDetector”的bean:调用init方法 失败的;嵌套异常是 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"
}
}
非常感谢您尽早回复。
谢谢
【问题讨论】:
-
你见过this。好像和你的jdk版本有关
标签: hibernate grails javabeans grails-2.1