getLong not implemented for class oracle.jdbc.driver.T4CRowidAccessor

时间:2022-02-13 01:22:47

症状:

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。

getLong not implemented for class oracle.jdbc.driver.T4CRowidAccessor的更多相关文章

  1. 无效的列类型&colon;getTimestamp not implemented for class oracle&period;jdbc&period;driver&period;T4CNumberAccessor

    错误信息: 无效的列类型:getTimestamp not implemented for class oracle.jdbc.driver.T4CNumberAccessor 错误原因:经过排查发现 ...

  2. java&period;lang&period;ClassNotFoundException&colon; oracle&period;jdbc&period;driver&period;OracleDriver 错误的解决办法

    java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver 错误的解决办法 (2011-05-05 16:08:05) 转载▼ ...

  3. myeclipe eclipse 常遇问题:Some projects cannot be imported 、java&period;lang&period;ClassNotFoundException&colon; oracle&period;jdbc&period;driver&period;OracleDriver、The file connot be validate

    1.Some projects cannot be imported because they already exist in the workspace 2.Some projects were ...

  4. 关于Class&period;forName&lpar;&quot&semi;oracle&period;jdbc&period;driver&period;OracleDriver&quot&semi;&rpar;&semi;报ClassNotFoundException 的异常

    关于try { Class.forName("oracle.jdbc.driver.OracleDriver"); }catch(ClassNotFoundException e) ...

  5. Class org&period;apache&period;struts2&period;json&period;JSONWriter can not access a member of class oracle&period;jdbc&period;driver&period;Physica

    产生这个错误的原因是因为我的oracle数据库中有一个CLOB字段,查询出来的时候要转换为JSON而报错. Class org.apache.struts2.json.JSONWriter can n ...

  6. 【转】Install Oracle Jdbc driver in your Maven local repository

    Install Oracle Jdbc driver in your Maven local repository If you are using Oracle, you must first in ...

  7. locked &lpar;a oracle&period;jdbc&period;driver&period;T4CConnection

    发现写Oracle的线程挂住了,场景是从mysql读数据,然后写到Oracle.   1 定位线程 因为在同一台机器上运行了多个java进程,要找到对应的pid,就是连接mysql的的那个进程.   ...

  8. JSP Tomcat8&period;0运行连接池时发生异常【AbstractMethodError oracle&period;jdbc&period;driver&period;T4CConnection&period;isValid&lpar;I&rpar;Z】

    原创 2015年12月28日 11:38:01 2004 一.Tomcat8.0运行连接池时发生异常: AbstractMethodError oracle.jdbc.driver.T4CConnec ...

  9. spring配置hibernate在使用oracle驱动时报错Cannot load JDBC driver class &&num;39&semi;oracle&period;jdbc&period;driver&period;OracleDriver &&num;39&semi;

    在看到这个错误的时候就感觉有点不对劲了,在错误的结尾和引号之间还有空间,如果敏锐的点应该察觉到可能是空格问题.由于本人的粗心导致这个问题一直困扰了我接近一个上午. 在排查这个问题的时候首先想到的就是关 ...

随机推荐

  1. 【jmeter】Bean shell使用&lpar;二&rpar;

    上一篇Jmeter之Bean shell使用(一)简单介绍了下Jmeter中的Bean shell,本文是对上文的一个补充,主要总结下常用的几种场景和方法,相信这些基本可以涵盖大部分的需求.本节内容如 ...

  2. 打通ssh的方法

    为了实现密码免输入,可以在安全的内网环境中打通ssh.linux和cygwin均可,步骤如下: 由A机去B机.在A生成密钥:ssh-keygen -t rsa,一路回车 将A的~/.ssh/id_rs ...

  3. Android 使用HttpClient方式提交POST请求

    final String username = usernameEditText.getText().toString().trim(); final String password = passwr ...

  4. 一个基于ATMEGA128的直流电机抱死程序(转)

    源:一个基于ATMEGA128的直流电机抱死程序 先说一下我的硬件情况:一块ATMEGA128实验板:一个带编码器的80:1的变速电机,编码器的输出端连接到单片机的PD4和PD5引脚:一块电机驱动电路 ...

  5. Canvas get&sol;putImageData

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. Sizzle 源码分析 (二)

    在Sizzle函数中,如果能快速处理或者通过querySelector处理,那么就使用它处理.否则使用select函数处理 . select函数 select = Sizzle.select = fu ...

  7. Java并发编程实践读书笔记(1)线程安全性和对象的共享

    2.线程的安全性 2.1什么是线程安全 在多个线程访问的时候,程序还能"正确",那就是线程安全的. 无状态(可以理解为没有字段的类)的对象一定是线程安全的. 2.2 原子性 典型的 ...

  8. Halcon的数据类型

    两大类: 1.图形参数Iconic (image, region, XLD) 2.与控制参数Control (string, integer, real, handle), 在Halcon算子的参数中 ...

  9. OpenMP基础使用

    OpenMP是CPU并行加速相关的编译处理方案,VS非常早的版本号就对其提供了支持,只是默认是关闭的.要开启这一支持.仅仅须要在项目的属性中设置就能够,详细选项为:配置属性->C/C++-&gt ...

  10. 插件式程序开发及其应用(C&num;)

    1.  定义 所谓“插件模型”,指应用程序由一些动态的独立模块构成,每个模块均具有一个或多个服务,并满足一定的插件协议,能够借助主程序实现主程序-插件:插件-插件之间的通讯. 应用该模型的系统,具有以 ...