報錯
The error may involve com.cbry.master.dao.JsonDataCollDao.updateRtJsonDsInfo-Inline
The error occurred while setting parameters
SQL: update RT_JSON_DS_INFO set xx=xx
Cause: java.sql.SQLException: ORA-01461: 僅能綁定要插入 LONG 列的 LONG 值
Mybatis插入Oracle資料庫中某條資料的某個字段值過長,如果是varchar2類型的,當長度超過4000(最大值)的時候,oracle會自動将該字段值轉為long類型的資料。
分析
實際上并沒有導4000
但是字元化轉換就會有轉義字元:
解決方法
用resultMap映射來解決查詢的問題。插入直插即可。
<resultMap type="com.cbry.RtJsonDsInfoPojo" id="rtJsonDsInfoPojo">
<result column="JSON_DATA_STRING" jdbcType="CLOB" property="jsonDataString" />
</resultMap>
設定字段類型
不可直接通過資料庫圖像管理工具進行修改字段類型:出現: ORA-22858: 資料類型的變更無效 ( invalid alteration of datatype)。
修改方法:新增clob類型字段,并備份舊的類型varchar2字段到其,再删去舊的varchar2字段 , 随後将clob字段名稱改回去。