解决HibernateException: Unable to determine Dialect to use [name=Oracle, majorVersion=19]的问题

问题描述

       客户基础环境升级,操作系统RedHat从 6.4升级到7.4 ,JDK从1.7升级到1.8,weblogic从11g升级到12g,Oracle从11g升级到12c。

       启动报错:

……
Caused By: org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void com.git.framework.core.dao.impl.BaseDao.setHibernateTemplate(org.springframework.orm.hibernate3.HibernateTemplate); nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateTemplate' defined in URL [zip:/weblogic/Oracle/Middleware/Oracle_Home/user_projects/domains/ecms_domain/servers/AdminServer/tmp/_WL_user/EasyCMS/rr10vo/war/WEB-INF/lib/_wl_cls_gen.jar!/spring/app-resources.xml]: 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' defined in URL [zip:/weblogic/Oracle/Middleware/Oracle_Home/user_projects/domains/ecms_domain/servers/AdminServer/tmp/_WL_user/EasyCMS/rr10vo/war/WEB-INF/lib/_wl_cls_gen.jar!/spring/app-resources.xml]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Unable to determine Dialect to use [name=Oracle, majorVersion=19]; user must register resolver or explicitly set 'hibernate.dialect'
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:593)
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:284)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1106)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
	Truncated. see log file for complete stacktrace
Caused By: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateTemplate' defined in URL [zip:/weblogic/Oracle/Middleware/Oracle_Home/user_projects/domains/ecms_domain/servers/AdminServer/tmp/_WL_user/EasyCMS/rr10vo/war/WEB-INF/lib/_wl_cls_gen.jar!/spring/app-resources.xml]: 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' defined in URL [zip:/weblogic/Oracle/Middleware/Oracle_Home/user_projects/domains/ecms_domain/servers/AdminServer/tmp/_WL_user/EasyCMS/rr10vo/war/WEB-INF/lib/_wl_cls_gen.jar!/spring/app-resources.xml]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Unable to determine Dialect to use [name=Oracle, majorVersion=19]; user must register resolver or explicitly set 'hibernate.dialect'
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1360)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1118)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
	Truncated. see log file for complete stacktrace
Caused By: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in URL [zip:/weblogic/Oracle/Middleware/Oracle_Home/user_projects/domains/ecms_domain/servers/AdminServer/tmp/_WL_user/EasyCMS/rr10vo/war/WEB-INF/lib/_wl_cls_gen.jar!/spring/app-resources.xml]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Unable to determine Dialect to use [name=Oracle, majorVersion=19]; user must register resolver or explicitly set 'hibernate.dialect'
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
	Truncated. see log file for complete stacktrace
Caused By: org.hibernate.HibernateException: Unable to determine Dialect to use [name=Oracle, majorVersion=19]; user must register resolver or explicitly set 'hibernate.dialect'
	at org.hibernate.dialect.resolver.DialectFactory.determineDialect(DialectFactory.java:130)
	at org.hibernate.dialect.resolver.DialectFactory.buildDialect(DialectFactory.java:96)
	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:117)
	at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2863)
	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2859)
	Truncated. see log file for complete stacktrace

 

分析

原因是Hibernate 3.*.*不支持Oracle 12。StandardDialectResolver无法解析Oracle12的方言。

 

解决

方案一:升级hibernate4。

方案二:强制使用Oracle10方言。

org.hibernate.dialect.OracleDialect

修改成==》

org.hibernate.dialect.Oracle10gDialect

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值