Mybatis的字段自增错误,无效的列类型: getInt not implemented for class oracle.jdbc.driver.T4CRowidAccessor

在使用Mybatis 接口编程 向Oracle数据库添加一条记录,出现错误。


错误信息:

  • SQL state [99999]; error code [17004]; 无效的列类型: getInt not implemented for class oracle.jdbc.driver.T4CRowidAccessor;
  • nested exception is java.sql.SQLException: 无效的列类型: getInt not implemented for class oracle.jdbc.driver.T4CRowidAccessor


错误原因:主键非自增,即使手动设置主键的值也会出错。


解决方法:因为useGeneratedKeys 要求数据库本身具备主键自动增长的功能。Oracle无法在单表内设置主键自增,所以更改映射xml文件中insert的useGeneratedKeys的值,将true改为false

<insert id="addUser" parameterType="User" useGeneratedKeys="false" keyProperty="id">
        insert into user(id,userName,userAge,userAddress) 
        values(#{id},#{userName},#{userAge},#{userAddress})
insert>

你可能感兴趣的:(Mybatis)