我的環(huán)境是Oracle9i2+hibernate3
使用原配的Oracle jdbc thin 驅(qū)動不能直接對clob對象進(jìn)行直接操作。
google了無數(shù)文章,仿造別人的辦法,先寫入一個空的clob對象,再讀出,再寫入真正的clob對象。不行,在BLOB blob =(BLOB) myObject.getClob 這里的類型強制轉(zhuǎn)化就會出現(xiàn)問題。
使用hibernate官方論壇里面的重寫一個數(shù)據(jù)類型的方式,則是出現(xiàn)String長度的錯誤。還試了很多種辦法,均失敗。
據(jù)說,Oracle 9i 里的jdbc oci驅(qū)動可以解決上面的問題,但我已經(jīng)沒有興趣再去折騰了。
最后到Oracle網(wǎng)站上面注冊了一個賬戶,下載了最新的Oracle 10g的jdbc驅(qū)動。
一切就正常了。其實就是Oracle原來的驅(qū)動的問題。
使用新的驅(qū)動,這個問題就不再是問題了。
Hibernate+Oracle+CLOB的讀寫其實只要這樣做:
1.在Oracle里設(shè)置某字段為clob類型。
2.在Hibernate的配置文件里使用網(wǎng)上下載的Oracle 10g最新的jdbc驅(qū)動。
3.實體類里把clob字段對應(yīng)的屬性類型設(shè)置為String。
4.hibernate的映射文件*.hbm.xml里把該字段對應(yīng)的類型該為text。
然后就可以在程序里把它當(dāng)成String隨便用了。