Oracle:关于:unknown Oracle major version[11] 异常的分析

来源:互联网 发布:网络机顶盒app 编辑:程序博客网 时间:2024/06/04 17:45

最近一段时间,我在用spring 2.0 + hibernate 3.1 + MyEclipse6.5  整合开发项目的时候都出现了这个问题。异常的截图如下:
 

 

很是头大、还有在用hibernate映射反转的时候、也会报这样的错误、

这个其实和hibernate的dialect(方言)配置有关!也就是说它的判断应该是这样的逻辑:
也就是说它的判断应该是这样的逻辑:
MAPPERS.put( 
              
"Oracle"
              
new DatabaseDialectMapper() 
                 
public String getDialectClass(int majorVersion) 
                  
switch ( majorVersion ) 
                     
case 8return Oracle8iDialect.class.getName(); 
                     
case 9return Oracle9iDialect.class.getName(); 
                     
case 10return Oracle10gDialect.class.getName(); 
                     
defaultthrow new HibernateException( "unknown Oracle major version [" + majorVersion + "]" ); 
                  }
 
                 }
 
              }
 
      ); 
正好有个项目开发环境用了Oracle 11g。那么也同样遇到了这个问题。
看上面的代码就知道了,只有对10g的支持。
后来经过一番研究发现如果是标准的11g,那么将dataSource相关的xml配置里dialect相关的地方用10g的方言也是可以支持的。配置如下:
        <property name="hibernateProperties">
            
<props>
                
<prop key="hibernate.dialect">
                    org.hibernate.dialect.Oracle10gDialect
                
</prop>
            
</props>
        
</property>注意到版本了吧,如果你用的是Oracle9i那么就改成Oracle9iDialect就可以了。
当然,从上面的代码看造成这个问题不一定只有这一个原因,查看Oracle的jdbc驱动发现也有对org.hibernate.dialect的支持。请使用ojdbc14.jar的驱动,12版的驱动对dialect的支持并不是太好。在有就是可能你在配置数据库联接的时候有操作上的问题。不管怎么说他都是没有找到相匹配的方言造成的。

 

还有一种就是自己的不细心了、一定要添加数据库连接的DB Driver不然也会爆unknown Oracle major version[11] 这个错误的。

问题解决了就好、XiaoFeng继续往后写代码。

呵呵、猫咪很可爱的哦 

原创粉丝点击