运行grails run-app
时出现此错误:
执行bootstraps时出错:使用name创建bean时出错 'messageSource':bean的初始化失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为'transactionManager'的bean:无法解析引用 设置bean属性'sessionFactory'时bean'sessionFactory'; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为'sessionFactory'的bean:无法解析对它的引用 设置bean属性时bean'hibernateProperties' 'hibernateProperties';嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为'hibernateProperties'的bean:无法解析 设置bean属性时引用bean'dialectDetector' 带有键[hibernate.dialect]的'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
)时,会出现此错误:
执行bootstraps时出错:创建名为'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,但是接口是预期的
任何人都知道如何应对这种情况?
答案 0 :(得分:3)
这是Joda Time Plugin中的一个错误。有关详细信息,请参阅上述JIRA issue。
答案 1 :(得分:2)
如果jdk是Java 7u25和grails 2.2.1,可能是解决方案:: Grails suddenly throws error Could not determine Hibernate dialect for database name
错误在grails 2.2.3中修复的信息是正确的。我测试了它,它工作。要点是(Spring loaded causes Grails to fail to bootstrap using Oracle JDK 1.7u25):
我希望你觉得它很有用:)
答案 2 :(得分:1)
我刚刚升级到Grails 2.0,并遇到了同样的问题,但如果我创建了一个全新的Grails 2.0项目,则没有这样的问题。我把这个答案留给任何可能会遇到同样问题的人。确保正确使用正确的hibernate库非常重要。
如果像我一样升级现有项目,我建议将现有项目的配置文件与全新2.0项目的配置文件进行比较。执行此操作,您将看到构建配置文件应包含一个hibernate插件:
runtime ":hibernate:$grailsVersion"
答案 3 :(得分:0)
您使用的是哪个版本的Grails?我相信你使用的是Grails 1.3.7。
H2Dialet有一些来自Hibernate.jar的错误,在Grails 1.3.7中是3.3.1,它包含在Hibernate 3.5和Grails 2.0中。
我的解决方案是,在您的DataSource.groovy中,使用此
dialect='org.hibernate.dialect.H2DialectPatch'
从这里下载Java类:Source Code,将其类名更改为H2DialectPatch以避免混淆,将其放在src / java文件夹中。
答案 4 :(得分:0)
似乎问题与JDK 7的版本有关(openjdk 7u25)。
替代方案是使用Ubuntu PPA for Oracle JDK: https://launchpad.net/~webupd8team/+archive/java
对我来说很好,并解决了这个问题。