保存数据到Oracle时报错ORA-17004: 列类型无效: 1111

1、问题描述:

关键信息:Mybatis;Oracle

(1)保存信息到Oracle时报错:

Caused by: org.apache.ibatis.type.TypeException: Error setting null for parameter #10 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: ORA-17004: 列类型无效: 1111

(2)Oracle字段:

TRX_CHANL VARCHAR2(2) DEFAULT '',

varchar 类型 可空

(3)mapper.xml

XML 复制代码
<resultMap id="baseResultMap" type="com.xxx.infra.po.XXXInfoPO">
    <result column="trx_chanl" jdbcType="VARCHAR" property="trxChanl"/>
</resultMap>

<insert id="insert" parameterType="com.xxx.infra.po.XXXInfoPO">
        insert into xxx_info (msg,trx_chanl) values (#{msg},#{trxChanl})
</insert>

2、解决

XXXInfoPO 没有给 属性trxChanl赋值时,保存Oracle就会报错 列类型无效: 1111,这时需要给属性trxChanl 指定属性的类型 #{trxChanl,jdbcType=VARCHAR (注意没有"")。这点Oracle跟MySQL是不一样的

XML 复制代码
<insert id="insert" parameterType="com.xxx.infra.po.XXXInfoPO">
 insert into xxx_info (msg,trx_chanl) values (#{msg,jdbcType=VARCHAR},#{trxChanl,jdbcType=VARCHAR})
</insert>
相关推荐
农村小镇哥14 分钟前
如何限定IP访问Oracle数据库
数据库·tcp/ip·oracle
程序猿秃头之路1 小时前
DDD 系列:聚合和聚合根详解
数据库·oracle·ddd·领域驱动设计
农村小镇哥2 小时前
Oracle中的锁和10704对高级队列锁
数据库·oracle
龙仔72518 小时前
SQL Server 创建只读账号完整操作(分两种场景:SSMS图形界面 + T-SQL脚本)
数据库·sql·oracle
曹牧1 天前
Oracle:快速定位最新数据
数据库·oracle
程序猿秃头之路1 天前
DDD 系列:实体和值对象详解
数据库·oracle·ddd·领域驱动设计
多巴胺梦想家2 天前
事务与并发控制:当多人同时操作数据库
服务器·数据库·oracle
从此以后自律2 天前
MyBatis-Plus 内置分页、PageHelper 自定义分页
mybatis
ClouGence2 天前
Oracle 到 OceanBase 迁移方案横评:停机导出/导入 vs OMS vs CDC 工具
数据库·oracle