ORA-01790: 表达式必须具有与对应表达式相同的数据类型

mapper

java 复制代码
void insertBatch(@Param("inventoryAuthHisList") List<InventoryAuthHis> inventoryAuthHisList);

xml

xml 复制代码
    <insert id="insertBatch">
        insert into T_INVENTORY_AUTH_HIS (HIS_OPER_ID, HIS_OPER_DATE, HIS_OPER_TYPE, AUTH_ID, INVENTORY_ID, USER_ID, AUTH_TYPE, AREA_ID)
        <foreach collection="inventoryAuthHisList" item="item" open="(" separator=" union all " close=")">
            select #{item.hisOperId}, #{item.hisOperDate}, #{item.hisOperType}, #{item.authId}, #{item.inventoryId}, #{item.userId}, #{item.authType}, #{item.areaId} from dual
        </foreach>
    </insert>

上面的批量插入报错

在执行SQL时MyBatis会自动通过对象中的属性给SQL中参数赋值,它会自动将Java类型转换成数据库的类型。

而一旦传入的是null它就无法准确判断这个类型应该是什么,就有可能将类型转换错误,从而报错。

jdbcType了解一下啊,参考jdbcType网址

Mybatis JdbcType Oracle MySql
JdbcType ARRAY
JdbcType BIGINT BIGINT
JdbcType BINARY
JdbcType BIT BIT
JdbcType BLOB BLOB BLOB
JdbcType BOOLEAN
JdbcType CHAR CHAR CHAR
JdbcType CLOB CLOB CLOB
JdbcType CURSOR
JdbcType DATE DATE DATE
JdbcType DECIMAL DECIMAL DECIMAL
JdbcType DOUBLE NUMBER DOUBLE
JdbcType FLOAT FLOAT FLOAT
JdbcType INTEGER INTEGER INTEGER
JdbcType LONGVARBINARY
JdbcType LONGVARCHAR LONG VARCHAR
JdbcType NCHAR NCHAR
JdbcType NCLOB NCLOB
JdbcType NULL
JdbcType NUMERIC NUMERIC/NUMBER NUMERIC
JdbcType NVARCHAR
JdbcType OTHER
JdbcType REAL REAL REAL
JdbcType SMALLINT SMALLINT SMALLINT
JdbcType STRUCT
JdbcType TIME TIME
JdbcType TIMESTAMP TIMESTAMP TIMESTAMP/DATETIME
JdbcType TINYINT TINYINT
JdbcType UNDEFINED
JdbcType VARBINARY
JdbcType VARCHAR VARCHAR VARCHAR

因此修改一下xml

看数据表字段类型改

xml 复制代码
    <insert id="insertBatch">
        insert into T_INVENTORY_AUTH_HIS (HIS_OPER_ID, HIS_OPER_DATE, HIS_OPER_TYPE, AUTH_ID, INVENTORY_ID, USER_ID, AUTH_TYPE, AREA_ID)
        <foreach collection="inventoryAuthHisList" item="item" open="(" separator=" union all " close=")">
            select #{item.hisOperId}, #{item.hisOperDate}, #{item.hisOperType}, #{item.authId}, #{item.inventoryId}, #{item.userId}, #{item.authType}, #{item.areaId,jdbcType=DOUBLE} from dual
        </foreach>
    </insert>
相关推荐
lbb 小魔仙3 天前
OpenClaw + cpolar 实战:远程 NAS、分享小游戏、RDP,再配置公网 AI 入口
数据库·人工智能·redis·oracle·prometheus
小刘在重生~3 天前
Oracle_day2 单行函数|组函数|分组|伪列|子查询|分页|多表连接
笔记·oracle·面试
NineData3 天前
NineData 与统信服务器操作系统完成兼容认证
数据库·oracle·操作系统·软件·数据库管理工具·ninedata·统信
山岚的运维笔记4 天前
mysql 专业笔记 -- 第 36 章:MySQL 管理
运维·数据库·笔记·后端·mysql·oracle·dba
geovindu4 天前
sql: Transaction & Concurrency Patterns using Oracel 21c
oracle·数据库开发·数据库架构
jnrjian4 天前
DRG-50857 ORA-30576 drixmd.PurgeKGL CTXSYS
数据库·oracle
jnrjian4 天前
Domain index 解决中英文 联合查询
oracle
jnrjian4 天前
Domain sync job SCHEDULER 空白job
oracle
TLA技术4 天前
LogMiner vs 裸日志解析(三):Oracle日志解析中的“前镜像”和“后镜像”,到底怎么用?
数据库·oracle·flink·dba·迁移学习
点纭5 天前
C 语言 第七章 常用函数(3)
c语言·开发语言·算法·oracle·c#