1. 环境
操作系统版本及内核发行版本 :
CentOS 7.6
数据库版本及架构 :
数据库架构单机, 数据库版本为Release 22c
开发语言及使用框架 :
JAVA-MyBatis
2. 问题描述
MyBatis获取生成的主键值失败,报出Closed ResultSet异常。
错误代码 :
Cause:org.apache.ibatis.executor.ExecutorException:Error getting generated key or setting result to parameter object 。Cause:java.sql.SQLException:The ResultSet is already closed。
3. 原因
SUNDB获取resultset中的主键值的方法有两种getGenerateKeys方法和selectKey方法。mybatis默认是开启使用getGenerateKeys方法的。当主键并不是数据库生成的时候,SUNDB无法使用getGenerateKeys方法获取到生成的值,此时会发生statement关闭,导致结果集关闭,抛出结果集已关闭的异常。

4. 解决方案
在有应用生成主键以及数据库生成主键同时存在的情况下,最好关闭getGenerateKeys:


最后修改时间:2023-07-17 14:52:09
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。





