1.這個異常是指,用戶向資料庫執行插入數據操作時,某條數據的某個欄位值過長,如果是varchar2類型的,當長度超過2000,--4000(最大值)之間的時候,oracle會自動將該欄位值轉為long型的(-_-||有點坑~),然後插入操作失敗。 2.改完數據類型之後還是報這個錯,原因是:當從dua ...
1.這個異常是指,用戶向資料庫執行插入數據操作時,某條數據的某個欄位值過長,如果是varchar2類型的,當長度超過2000,--4000(最大值)之間的時候,oracle會自動將該欄位值轉為long型的(-_-||有點坑~),然後插入操作失敗。
2.改完數據類型之後還是報這個錯,原因是:
當從dual中取數據時,會將clob對象的欄位轉為Long型,所以mybatis里不能用select XXXX from dual union all的方式。而且mybatis里要這樣寫:jdbcType=CLOB
另外提一下,之前不想在代碼的getter里寫一堆截取字元長度的代碼,就想利用Oracle資料庫的substrb函數。
substrb是在插入的時候進行截取,但這個時候按照1的說法已經把超長欄位的類型改為long類型,所以還是會報錯。
解決辦法:要麼是在賦值的時候就截斷好不能超長,要麼是把超長欄位的類型改為clob或者blob類型
參考資料:
https://www.cnblogs.com/xiaotiannet/p/3846444.html
https://www.cnblogs.com/xiaoliu66007/p/8384519.html