报错
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
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cscXVU1EMNpXTz0keYhnRzwEMW1mY1RzRapnTtxkb5ckYplTeMZTTINGMShUYfRHelRHLwEzX39GZhh2css2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3Pn5GcuETN5QDM1YTMwMzNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
但是字符化转换就会有转义字符:
解决方法
用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字段名称改回去。