Hibernate 与 Oracle 11g 的问题

    前两天我发了一篇博文Win7启动Oracle出错,于是我安装了Oracle的最新版本 Oracle11g,这也许是因我比较热衷于Win7吧,否则也不会想着用高版本的Oracle装来装去的,要知道Oracle安装过程也很麻烦的,而且还很大,很占空间。但这次我也是无能为力了,各种方法都尝试了,可以说是黔驴技穷了,就一个Oracle 10g我还反复装了好几遍呢。

    最后我我耗费了几天的时间终于把Oralce11g下载来了,网速不好,没办法。还好功夫不负有心人,我终于把它给下载下来了,下载完的那一瞬间真叫一个激动啊!啥也别说了,还等啥呢,装吧!于是乎就装了起来,咦!安装的界面也变了,哦,我知道这真是高版了。最后装好了,也建好自己需要的几个用户,随便写几个SQL,嗯效果不错,可以睡个安稳的觉了!

    今天上午呢,我是有点空闲的时间了,反正其它不太紧急的事情我也是懒得弄了,于是就把我们正在做的系统的数据库表往我本机的Oracle还原一份吧,其实非常的easy,哎还是眼高手低了,竟然让我搞了将近两个小时,真是惭愧的没法说!就当自己又温习了一遍了。OK,现在数据库表和数据也都还原了,接下就是在本机测试系统了,哎,麻烦就自此开始了!一运行,起不来,哦,忘了改数据库连接。改好后,再运行,还是没有起来,我的脸色开始变了,心里有稍微有点发毛了!仔细看了一下日志:

Caused by: org.hibernate.HibernateException: unknown Oracle major version [11]
    at org.hibernate.dialect.DialectFactory$1.getDialectClass(DialectFactory.java:150)

偶滴个神啊,知道是怎么回事了吧?高版本惹的祸啊!这可咋办勒,很easy啦,下载Oracle11g的JDBC驱动不就OK了吗?嗯,按道理来说换个最新的JDBC驱动就能解决这个问题,那继续吧。就开Google啦,这个可以在Oracle官方的网站资源里找得到 http://www.oracle.com/technology/global/cn/software/tech/java/sqlj_jdbc/htdocs/jdbc_111060.html

这个地址里可以下载各个版的Oracle驱动。直接下载一个不就OK了吗?可是下载还要用户名和密码,你说Oralce这么牛X的公司也真够操蛋的啊,不就下载一个1M多的驱动吗?你TMD还要Ye登录,我就登录吧,可是一登没登上,二登也没有登上,再几登也登不上了,找回密码吧,官网的这个服务还给停止了,那就再注册一个帐号算了,一看那个复杂的填写步骤,哎,算了吧,我还是另谋他路吧。于是继续Google,不一会就找着了一个资料,是在CSDN上的,这个上载的同学也是很操蛋,还要用3分才能下载,我就那么几分了,哎,咬咬牙下载吧!好了,按说这次换成最新的驱动了,程序应该跑起来了吧?凡事不能想当然啊,解决了这个问题可又出现其它的问题了!还是启动不了,可能是现在用的Hiberate 版本不支持Orable 11g,那再找个最新的Hibernate版本吧。

     我看下正在使用的Hibernate 的版本是:3.2.6.ga ,估计这个版本比较古老了,于是就又下载了最版 3.6.0.Final版,引入它所依赖的jar,一运行又出错了:

严重: Error while registering Oracle JDBC Diagnosability MBean.
javax.management.MalformedObjectNameException: Invalid character '
' in value part of property
    at javax.management.ObjectName.construct(ObjectName.java:602)
    at javax.management.ObjectName. (ObjectName.java:1403)
    at oracle.jdbc.driver.OracleDriver.registerMBeans(OracleDriver.java:303)
    at oracle.jdbc.driver.OracleDriver$1.run(OracleDriver.java:213)
    at java.security.AccessController.doPrivileged(Native Method)
    at oracle.jdbc.driver.OracleDriver. (OracleDriver.java:209)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)

这下还真麻烦了,各种方法都尝试了呀,怎么还是不行?再把JDBC换回原来的怎么样?再试试,JDBC又换回来的 ojdbc14.jar ,再运行,奇迹出现了,它跑起来了!这么一个简单的问题,竟然折腾我一个半死,或许一开始就把问题给定位错了,应该早就想到是Hibernate 支持 Oracle的问题了!不管怎么样吧,问题总算解决了!

总结: 使用Oracle11g 数据库时,Hibernate 必须得用最新版本:3.6.0.Final , JDBC驱动不用更新。

下载Hibernate 3.6相关资源 :hibernate-distribution-3.6.0.lib.zip

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值