zoukankan      html  css  js  c++  java
  • (动态改变数据源遇到的问题)ORACLE11g:No Dialect mapping for JDBC type: -9解决方案

    在动态改变数据源时 hibernate配置不能使用Oracle官方的方言(org.hibernate.dialect.Oracle10gDialect)

    做法写一个方言扩展类,缺什么类型,添加什么类型的支持,并在配置文件中使用自定义的方言扩展类

    此次报错:由于hibernate4.2.0和Oracle10g数据库结合使用自定义方言时,需要和老版本做区别,原来的Oracle10gDialect中没有注册NVARCHAR和NCLOB数据类型,

    此二者的java.sql.Types对应的类型编码为-9和2011,其它的类型可以参考下面的表1,解决思路是缺少什么类型就在自定义的方言类中注册哪个类型,并且确定用StandardBasicTypes中的类型解析。

    例子:步骤1、

    package cc.dfsoft.uexpress;
    
    import java.sql.Types;
    
    
    import org.hibernate.dialect.Oracle10gDialect;
    import org.hibernate.type.StandardBasicTypes;
    /**
     * Created by luxd on 2018/1/19.
     * 继承oracle方言类 , 重新定义oracle字段类型映射到java的类型
     */
    public class MyOracleDialect  extends Oracle10gDialect{
        public MyOracleDialect() {
            super();
            registerHibernateType(Types.NVARCHAR, StandardBasicTypes.STRING.getName());
    
    
        }
    }
    

      步骤2:

    更改hibernate数据库配置文件,将数据库方言改为刚才自定义的方言类

    hibernate.dialect=cc.dfsoft.uexpress.MyOracleDialect

    各种数据类型编号对照表如下

  • 相关阅读:
    线程同步-使用CountDownEvent类
    WPF 依赖属性和附加属性
    ef core
    Razor语法
    python-爬虫
    ftp
    泛型
    结对编程作业
    第三次作业
    第二次作业
  • 原文地址:https://www.cnblogs.com/qinyios/p/11089398.html
Copyright © 2011-2022 走看看