Mybatis插入Oracle数据库数据抛出:ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值异常的解决办法

本文主要是介绍Mybatis插入Oracle数据库数据抛出:ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值异常的解决办法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

异常图

1 检查插入的值是否大于该字段数据类型约束的长度

  这是最常见的解决办法,从字面意思就是说插入的字段长度超过了最大长度。这里不多解释,只需要加大长度。

2 可能是使用虚表dual导致类型转换出错

  有可能在检查之后发现插入的字段数据并没有超过最大长度,但是还是报错。那么可能跟我们的sql语句有关。
  我们在使用oracle进行批量插入数据的时候,可能会有这样的写法:

    insert into XX (ID, xxx,yyy) SELECT XX_SEQUENCE.nextval as ID, A.*FROM (<foreach collection="list" item="item" index="index" separator="UNION ALL">SELECT#{item.xxx,jdbcType=VARCHAR}, #{item.yyy,jdbcType=BLOB},FROM dual</foreach>) A

  :上面的XX_SEQUENCE.nextval as ID是oracle逐渐自增的语法,XX_SEQUENCE为自己的索引名。
  这样的写法一般是没有问题的,但是注意如果我们从dual中获取的字段的jdbcType类型有blob或者clob类型的时候,会将blob、clob对象的字段转为Long型。blob和clob转为long之后长度就很容易超出范围了。因此,这里建议:

  1. 插入一条数据的时候,采用insert into value()语法
  2. 插入一批数据的时候,用到begin end语法

  insert into value()大家基本都会,下面看看begin end语法的语法:

        begin<foreach collection="list" item="item" index="index" separator=";">insert into XX ( ID, xxx, yyy)values(XX_SEQUENCE.nextval, #{item.xxx,jdbcType=VARCHAR},#{item.yyy,jdbcType=BLOB})</foreach>;end;

  begin …end的意义可以理解为SQL语句执行的上下限,begin 是上限,SQL开始的地方,end是下限sql语句结束的地方,表示一个语句块,用于一次提交大量sql语句,减少数据库连接。
  begin end之间的语句会算作同一个事务,除非中途加入了commit。
  使用begin end需要注意的是,每个sql语句都要确保以“;”结尾,代表一句sql结束。

这篇关于Mybatis插入Oracle数据库数据抛出:ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值异常的解决办法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/330307

相关文章

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

mybatis中resultMap的association及collectio的使用详解

《mybatis中resultMap的association及collectio的使用详解》MyBatis的resultMap定义数据库结果到Java对象的映射规则,包含id、type等属性,子元素需... 目录1.reusltmap的说明2.association的使用3.collection的使用4.总

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

mybatis-plus QueryWrapper中or,and的使用及说明

《mybatis-plusQueryWrapper中or,and的使用及说明》使用MyBatisPlusQueryWrapper时,因同时添加角色权限固定条件和多字段模糊查询导致数据异常展示,排查发... 目录QueryWrapper中or,and使用列表中还要同时模糊查询多个字段经过排查这就导致只要whe

SpringBoot集成MyBatis实现SQL拦截器的实战指南

《SpringBoot集成MyBatis实现SQL拦截器的实战指南》这篇文章主要为大家详细介绍了SpringBoot集成MyBatis实现SQL拦截器的相关知识,文中的示例代码讲解详细,有需要的小伙伴... 目录一、为什么需要SQL拦截器?二、MyBATis拦截器基础2.1 核心接口:Interceptor

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java