hibernate操作clob欄位

2021-08-29 17:02:47 字數 1157 閱讀 7643

不可否認的,自己的確還是個新人,操作oracle clob欄位也搞上了兩天才搞定,網上看了很多貼,都沒能解決,最後發現了乙個比較簡單的方法。

要解決的問題:使用者通過頁面提交上傳的,需轉化成base64編碼,資料庫用clob欄位儲存該。

解決方法:

網上看的帖子都說操作oracle clob欄位必須在乙個單獨的事務中處理,(到底為什麼,偶也不清楚)整合三大框架的專案,可在dao元件中繼承hibernatedaosupport,然後開啟乙個單獨的事務進行操作。

dao層原始碼:

/**

* 儲存

* @param img result

* return

*/public int addimg(imginfo img,string result) throws exception

引數img是封裝好的實體類。result是轉換成base64位碼的結果。操作oracle clob欄位要先插入乙個空值,網上許多貼都直接hibernate.createclob(""));插入乙個空值,但我在上面**中img.getimg()時會報空指標錯誤,但img.setimg(hibernate.createclob("1"));卻不會,到底為什麼?還搞不懂,但問題總算解決了,有機會再問問前輩們。

/**

* 對陣列byte進行編碼

* @param

* @return

*/public static string setbase64(byte by)

/*** 對陣列byte進行解碼碼

* @param

* @return

*/public static byte getbase64(string by) catch (ioexception e)

return bytes;

}

action的**

只貼部分

uploadform f = (uploadform) form;

//獲取jsp頁面上傳的

formfile formfile = f.getfile();

//將formfile轉換成byte陣列

byte b=formfile.getfiledata();

jsp頁面**:

hibernate 關於 Clob使用

lob basic fetch fetchtype.eager column name s binfo columndefinition clob private clob sbinfo 抄來的是用string型別 能放進資料庫 然後 取出來 就報 對不上資料型別了 好吧 來個工具類 把clob 跟...

java操作Oracle的CLOB型別

今天同事問我是否用過oracle中的clob型別,說實話 沒聽過。oracle 中sql 語句中的兩個單引號之間的字元數不能大於 4000 的限制。data data 在sql語句之間,當data的值大於 4000 個位元組時 就會報錯。oracle 往有clob型別的表中插資料 1.其他字段照常插...

操作Oracle的clob型別字段

引用 1.插入和更新 插入一條資料,注意clob欄位,需要先插入乙個空的clob型別 empty clob 然後再單獨更新clob欄位 在插入到更新之間一定要將自動提交設為false,否則,再次查詢時就不能正確更新,查詢時一定要用select from table where for update ...