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