ORACLE11g:No Dialect mapping for JDBC type: -9解決方案

來源:互聯網
上載者:User

標籤:and   分享   ict   思路   自訂   結果   欄位   standard   技術   

問題來源: 煞筆領導不幹活


好不容易幹了個活


改了個欄位長度,從varchar2(50) 改成了nvarchar(100)


結果因為方言問題,程式起不來了


欄位類型也改不回來了


nnd  報錯如下:

 

解決方案

    由於hibernate4.2.0和Oracle10g資料庫結合使用自訂方言時,需要和老版本做區別,原來的Oracle10gDialect中沒有註冊NVARCHAR和NCLOB資料類型,

此二者的java.sql.Types對應的類型編碼為-9和2011,其它的類型可以參考下面的表1,解決思路是缺少什麼類型就在自訂的方言類中註冊哪個類型,並且確定用StandardBasicTypes中的類型解析。

步驟1:

寫一個自訂方言類,該類繼承原來的Oracle10gDialect方言,並註冊缺少的類型

 

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=org.hibernate.dialect.Oracle10gDialecthibernate.dialect=cc.dfsoft.uexpress.MyOracleDialect
各種資料類型編號對照表如下

 

 

 

           

 

ORACLE11g:No Dialect mapping for JDBC type: -9解決方案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.