在使用 grails run-app 命令运行 Grails 2.1.1 应用程序时,我收到 Hibernate 错误,无法创建所需的 bean。
错误的堆栈跟踪如下:
加载 Grails 2.1.1 | 配置类路径。| 环境设置为开发..... | 打包 Grails 应用程序.... | 编译1个源文件| 编译1个源文件..... | 运行 Grails 应用程序 配置 Spring Security UI ... ... 完成配置 Spring Security UI 配置 Spring Security Core ... ... 完成配置 Spring Security Core 配置 Spring Security ACL ... ... 完成配置 Spring Security ACL 配置 Spring安全推特……配置完毕 Spring Security Twitter
| 错误 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“hibernateProperties”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“hibernateProperties”的bean时出错:使用键[hibernate.dialect]设置bean属性“properties”时无法解析对bean“dialectDetector”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“dialectDetector”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.codehaus.groovy.grails.orm.hibernate.exceptions.CouldNotDetermineHibernateDialectException: 无法确定数据库名称 [H2] 的 Hibernate 方言!
消息:创建名为“transactionManagerPostProcessor”的 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 属性“属性”;嵌套异常是 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 | 在 java.util.concurrent.FutureTask 中运行 | 第1145章 java.util.concurrent.ThreadPoolExecutor 中的runWorker | 615 | 在 java.util.concurrent.ThreadPoolExecutor$Worker 中运行 ^ 724 | 跑 。. . 在由 BeanCreationException 引起的 java.lang.Thread 中:创建名为“transactionManager”的 bean 时出错:在设置 bean 属性“sessionFactory”时无法解析对 bean“sessionFactory”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“sessionFactory”的 bean 时出错:无法解析对 bean 的引用 hibernateProperties' 同时设置 bean 属性 'hibernateProperties'; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“hibernateProperties”的 bean 时出错:使用键 [hibernate.dialect] 设置 bean 属性“properties”时无法解析对 bean“dialectDetector”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“dialectDetector”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.codehaus.groovy.grails.orm.hibernate.exceptions.CouldNotDetermineHibernateDialectException:无法确定数据库名称 [H2] 的 Hibernate 方言!BeanCreationException:创建名为“hibernateProperties”的bean时出错:使用键[hibernate.dialect]设置bean属性“properties”时无法解析对bean“dialectDetector”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“dialectDetector”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.codehaus.groovy.grails.orm.hibernate.exceptions.CouldNotDetermineHibernateDialectException:无法确定数据库名称 [H2] 的 Hibernate 方言!BeanCreationException:创建名为“hibernateProperties”的bean时出错:使用键[hibernate.dialect]设置bean属性“properties”时无法解析对bean“dialectDetector”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“dialectDetector”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.codehaus.groovy.grails.orm.hibernate.exceptions.CouldNotDetermineHibernateDialectException:无法确定数据库名称 [H2] 的 Hibernate 方言!BeanCreationException:创建名为“dialectDetector”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.codehaus.groovy.grails.orm.hibernate.exceptions.CouldNotDetermineHibernateDialectException:无法确定数据库名称 [H2] 的 Hibernate 方言!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 引起:创建名为“sessionFactory”的 bean 时出错:设置 bean 属性“hibernateProperties”时无法解析对 bean“hibernateProperties”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“hibernateProperties”的 bean 时出错:使用键 [hibernate.dialect] 设置 bean 属性“properties”时无法解析对 bean“dialectDetector”的引用;嵌套异常是 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"
}
}
非常感谢早期的回应。
谢谢