当前位置: 首页 > 知识库问答 >
问题:

如何避免CouldNotDetmineHibernateDialectException错误?

宗政和韵
2023-03-14

我正在将oracle从10升级到12,对于这个特定的项目,我遇到了以下错误:

<[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1460078994317> <BEA-101162> <User defined listener org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener failed: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Cannot resolve reference to bean 'hibernateProperties' while setting bean property 'hibernateProperties'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateProperties': Cannot resolve reference to bean 'dialectDetector' while setting bean property 'properties' with key [hibernate.dialect]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dialectDetector': Invocation of init method failed; nested exception is org.codehaus.groovy.grails.orm.hibernate.exceptions.CouldNotDetermineHibernateDialectException: Could not determine Hibernate dialect for database name [Oracle]!.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Cannot resolve reference to bean 'hibernateProperties' while setting bean property 'hibernateProperties'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateProperties': Cannot resolve reference to bean 'dialectDetector' while setting bean property 'properties' with key [hibernate.dialect]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dialectDetector': Invocation of init method failed; nested exception is org.codehaus.groovy.grails.orm.hibernate.exceptions.CouldNotDetermineHibernateDialectException: Could not determine Hibernate dialect for database name [Oracle]!

似乎它没有识别我在DataSource上添加的配置:

dataSource {
    pooled = true
    driverClassName = "oracle.jdbc.OracleDriver"
    dialect = "org.hibernate.dialect.Oracle10gDialect"
}

我们使用的是Java 8,我们对代码有这些依赖关系:

runtime 'com.oracle:ojdbc7:12.1.0.2'
runtime(group: 'com.oracle', name: 'ons', version: '10.2.0.3')

问题是它正在为另一个项目工作(与这个项目具有相同的结构,但由于某种原因它在这里不起作用)

是否有任何遗漏或我可以找到问题并解决问题的地方?

共有1个答案

洪涵亮
2023-03-14

此问题发生在java版本1.7.0_25。通过将java1.7.0_25升级到另一个更高版本将帮助您解决问题。有时降级到1.6。X也可以。但是升级是最好的解决方案。

Grails 2.2.3中修复了这个问题。但是在Grails 2.2.3中,它对于Linux上的< code>OpenJDK 1.7.0_25仍然是不可用的,尽管< code>Oracle的JDK可以工作。

功劳归于@aeischeid

本教程给出了一个逐步解决方案:将Grails与Oracle 11g示例配置连接起来

  1. 如何避免“无法确定数据库名称[H2]!”的Hibernate方言

建议 - 1:

从本教程中,我得到了两个建议,请尝试这2个问题-您需要安装Grails H2插件。添加

compile ":h2:0.2.6"

grails-app/conf/BuildConfig.groovy,在插件块中。

建议2:

在< code>DataSource.groovy中,它们是< code >区分大小写的。因此,请检查是否有任何东西(如< code >用户名或其他)与大小写不匹配。

资源链接:GRAILS RUN-APP出现大量错误

建议 - 3:

danielnaber给出了一些建议 圣杯编译 --刷新依赖关系和/或圣杯清理可能会有所帮助。您需要在grails-app/conf/DataSource.groovy中配置数据库访问(为grails run-app开发,为grails war开发)

建议-4:

从本教程中删除<code>数据源。groovy文件并在执行<code>grails clean

目前,它正在尝试在文件系统上创建数据库,但由于您没有执行此操作的权限而失败。

建议5:

你可以看看https://github.com/Netflix/Lipstick/issues/8

建议-6:

当您在那里时,您应该修复您也看到的缓存提供程序警告-将Hibernate块中'cache.provider_class'的值更改为

   cache.provider_class = 'net.sf.ehcache.hibernate.EhCacheProvider' 

请尝试6个建议。希望能帮到你。

 类似资料:
  • 问题内容: 我试图写一个近似平方根的函数(我知道有数学模块……我想自己做),但我被浮点运算搞砸了。如何避免这种情况? 使用它会产生以下结果: 我意识到我可以使用,但是我希望能够做到这一点非常准确。我希望能够计算出6或7位数字。如果我四舍五入,那将是不可能的。我想了解如何在Python中正确处理浮点计算。 问题答案: 这实际上与Python无关- 使用硬件的二进制浮点算法,您会在任何语言中看到相同的

  • 问题内容: 我正在尝试通过从客户端向服务器发送密钥和随机数来认证用户。 我的代码未向我显示客户端的响应。执行下面的代码时,我得到了一个空指针异常。 问题答案: 解决大多数问题的固定步骤: 阅读堆栈跟踪以确定哪一行代码引发NPE 在该行代码处设置一个断点 使用调试器,在遇到断点时,确定该行中的对象引用是 弄清楚为什么引用该文件(到目前为止,这是唯一实际的困难部分) 解决根本原因(也可能很困难)

  • 问题内容: 我有两个简单的Java代码。第一个将恒定功率定义为power = a.pow(b); 第二个将恒定功率定义为power = BigInteger.ONE.shiftLeft(b) 在命令行中设置内存标志- Xmx1024m,第一个代码可以正常工作,但是第二个代码却出现错误:java.lang.OutOfMemoryError:Java堆空间 我的问题:我应该在第二个代码中更改什么以避免

  • 问题内容: 我有一个用于将文本添加到现有.doc文件中的代码,它将通过使用apache POI将其另存为另一个名称。 以下是到目前为止我尝试过的代码 以下是我得到的 我已经添加了与此对应的所有jar文件,但仍然找不到解决方案。我对apache poi是陌生的,所以请帮我提供一些解释和示例。谢谢 问题答案: 从我对问题的评论中复制: 看起来您需要Apache POI发行版中的poi-ooxml-sc

  • 当方法调用的嵌套层级过深,导致栈空间耗尽时,会抛出StackOverflowError错误。 尝试复现问题,代码如下:

  • 问题内容: 我有此错误信息: 消息8134,级别16,状态1,第1行除以零错误。 编写SQL代码的最佳方法是什么,这样我就再也看不到此错误消息了? 我可以执行以下任一操作: 添加一个where子句,这样我的除数永远不会为零 或者 我可以添加一个case语句,以便对零进行特殊处理。 使用子句的最佳方法是吗? 有没有更好的方法,或者如何执行? 问题答案: 为了避免出现“被零除”错误,我们对此进行了如下