mybatis + oracle,出現ORA-01461:僅能綁定要插入LONG列的LONG值


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM