getLong not implemented for class oracle.jdbc.driver.T4CRowidAccessor
症状:
SpringMVC+MyBatis向数据库插入数据,主键应用ORACLE中自己设置的自增序列会发生如下错误:
nested exception is Java.sql.SQLException: 无效的列类型: getLong not implemented for class oracle.jdbc.driver.T4CRowidAccessor
解决办法:
相应实体类映射文件中
<insert id="save" parameterType="io.renren.entity.ScheduleJobEntity" useGeneratedKeys="false" keyProperty="jobId" databaseId="oracle">insert into "schedule_job"("bean_name", "method_name", "params", "cron_expression", "remark")values(#{beanName,jdbcType=NVARCHAR}, #{methodName,jdbcType=VARCHAR}, #{params,jdbcType=VARCHAR}, #{cronExpression,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR})</insert>
将 useGeneratedKeys="true" 改为 useGeneratedKeys="false" 。
把insert 属性里的useGeneratedKeys的属性设置为false就可以成功插入数据了,useGeneratedKeys 要求数据库本身具备主键自动增长的功能, mysql,sqlserver可以使用useGeneratedKeys =true 这功能,oracle不支持useGeneratedKeys,所以ORACLE是不能使用useGeneratedKeys =true的。
7月20日补充:
按照上面方法,虽然数据插入成功了,但是在 ScheduleJobEntity 中无法返回 jobId值,即ScheduleJobEntity.jobId为NULL,这将导致后续代码出错。
Oracle虽然不直接支持自增ID,但可以通过序列实现类似自增ID的效果,因此,改为以下代码:
<insert id="save" parameterType="io.renren.entity.ScheduleJobEntity" keyProperty="jobId" databaseId="oracle"><selectKey resultType="Long" order="BEFORE" keyProperty="jobId"> SELECT SEQ_SCHEDULE_JOB.NEXTVAL as jobId from DUAL</selectKey> insert into "schedule_job"("job_id","bean_name", "method_name", "params", "cron_expression", "status","remark")values(#{jobId,jdbcType=INTEGER}, #{beanName,jdbcType=NVARCHAR}, #{methodName,jdbcType=VARCHAR}, #{params,jdbcType=VARCHAR}, #{cronExpression,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR})</insert>
经测试,运行正常,运行后返回插入记录的ID给Entity。
转载于:https://www.cnblogs.com/legendjslc/p/7159171.html
getLong not implemented for class oracle.jdbc.driver.T4CRowidAccessor相关推荐
- java.sql.SQLException: 无效的列类型: getLong not implemented for class oracle.jdbc.driver.T4CRowidAccessor
Springboot+MYbaits框架下,使用以下注解操作oracle插入数据时报错 @Insert("insert into student (stuid,name)values(#{s ...
- JSP Tomcat8.0运行连接池时发生异常【AbstractMethodError oracle.jdbc.driver.T4CConnection.isValid(I)Z】...
原创 2015年12月28日 11:38:01 2004 一.Tomcat8.0运行连接池时发生异常: AbstractMethodError oracle.jdbc.driver.T4CConnec ...
- oracle.jdbc.driver.OracleDriver和oracle.jdbc.OracleDriver这两个驱动有什么区别?
连接Oracle数据库必须先向java程序注册Oracle JDBC驱动程序,然后才能打开数据库连接.有两种注册Oracle JDBC驱动程序的办法. 1.使用java.lang.Class的forN ...
- jdbc driver oracle,Driver class 'oracle.jdbc.driver.OracleDriver' could not be found
kettle中配置db连接到oracle数据库报错, 错误连接数据库 [192.168.2.19_test] : org.pentaho.di.core.exception.KettleDatabas ...
- fail to load driver class oracle.jdbc.driver.OracleDriver in eitherofHIkariConfig class loader
项目场景: 该项目为springboot连接mysql,读取数据库中的数据源配置,在代码组装成多数据源进行操作 问题描述 idea本地启动项目访问OK,但部署到远程服务器,连接oracle时报,fai ...
- Jasper连接Oracle报:oracle.jdbc.driver.OracleDriver cannot be found by net.sf.jasperreports_6.6.0.final
在TIBCO Jaspersoft Studio-6.6.0中创建oracle连接的时候选择oracle,提示, net.sf.jasperreports.engine.JRRuntimeExcept ...
- 【spring boot基础知识】java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
出现此错误需要增加odbc jar包. 出现此错误的原因据说是这样的: 在使用Maven的依赖甲骨文的驱动包时,会出现依赖错误的情况,原因是版权原因,甲骨文官方屏蔽了依赖,那么要在本地使用的Mav ...
- t4c oracle,locked (a oracle.jdbc.driver.T4CConnection
发现写Oracle的线程挂住了,场景是从mysql读数据,然后写到Oracle. 1 定位线程 因为在同一台机器上运行了多个java进程,要找到对应的pid,就是连接mysql的的那个进程. [adm ...
- java.sql.SQLException: oracle.jdbc.driver.OracleDriver
该异常说明 Oracle驱动出现异常. 检查 项目中 ojdbc.jar包 是否完整. 如果maven依赖引入jar包失败,可以手动下载jar包.加载. 如果项目中jar包完整. 将jar包放入 To ...
最新文章
- 设计模式学习1:设计模式简述和设计模式原则
- python中常见的流程结构-【Python2】04、Python程序控制结构
- Java技术:Spring Boot 配置文件敏感信息加密
- Java EE 企业网站_基于jsp的企业网站系统-JavaEE实现企业网站系统 - java项目源码...
- java运输_JAVA-基础-方法
- linux命令-p,Linux-send命令详解
- 海康网络摄像头添加到萤石云
- 制作简易的幸运转盘抽奖
- Multithreaded Rendering Graphics Jobs 多线程渲染与图形Jobs 性能系列8
- 2021中国开源优秀人物榜出炉!
- mui-添加自定义图标(彩色)
- [note]First draft of a report on the EDVAC (1~2)
- winedit使用教程_【STemWin教程入门篇】第43章 EDIT-编辑控件
- intellij idea weblogic 下面 怎么远程断点
- 利用XSS漏洞实现键盘记录器
- 股票自动化交易软件的优势
- C语言malloc申请空间函数的两种返回方法
- tar命令打包排除某个文件或目录
- Kubernetes CKS 2021 Course【15】---Microservice Vulnerabilities - mTLS
- 倪光南:IT业需要蓝海红海两大战略
热门文章
- vbscript html 在线,在HTML中使用VBScript可用三种方法
- python计算2的20次方_Python学习二运算符
- Linux版本跟Hadoop版本,Hadoop本地库与系统版本不一致引起的错误解决方法
- 内容 超链接_excel中如何设置目录与返回目录超链接?这两种方法很简单
- linux怎么开启iis管理员权限,为每个站点的IIS设置权限
- 属性getter和setter
- CSS 总结我对3D效果的一些误解
- linux环境搭建pypi源,使用pypi-server搭建简单的PyPI源
- php数组书写形式,php数组(array)输出的三种形式讲解
- java的file类中的方法_java中File类的使用方法|chu