oracle 方言报错,ORACLE11g:No Dialect mapping for JDBC type: -9解决方案详解
解決方案
由于hibernate4.2.0和Oracle10g數(shù)據(jù)庫(kù)結(jié)合使用自定義方言時(shí),需要和老版本做區(qū)別,原來(lái)的Oracle10gDialect中沒(méi)有注冊(cè)NVARCHAR和NCLOB數(shù)據(jù)類型,
此二者的java.sql.Types對(duì)應(yīng)的類型編碼為-9和2011,其它的類型可以參考下面的表1,解決思路是缺少什么類型就在自定義的方言類中注冊(cè)哪個(gè)類型,并且確定用StandardBasicTypes中的類型解析。
步驟1:
寫一個(gè)自定義方言類,該類繼承原來(lái)的Oracle10gDialect方言,并注冊(cè)缺少的類型
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字段類型映射到j(luò)ava的類型
*/?public?class?MyOracleDialect??extends?Oracle10gDialect{?public?MyOracleDialect()?{?super();
registerHibernateType(Types.NVARCHAR,?StandardBasicTypes.STRING.getName());
}
}
步驟2:
更改hibernate數(shù)據(jù)庫(kù)配置文件,將數(shù)據(jù)庫(kù)方言改為剛才自定義的方言類
#hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
hibernate.dialect=cc.dfsoft.uexpress.MyOracleDialect
各種數(shù)據(jù)類型編號(hào)對(duì)照表如下
總結(jié)
以上是生活随笔為你收集整理的oracle 方言报错,ORACLE11g:No Dialect mapping for JDBC type: -9解决方案详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: nbu 恢复oracle数据库,关于使用
- 下一篇: 独立按键控制数码管c语言,各位大佬,独立