ORACLE 12C 插入数据遇到 Error getting generated key or setting result to parameter object错误

Posted java李阳勇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORACLE 12C 插入数据遇到 Error getting generated key or setting result to parameter object错误相关的知识,希望对你有一定的参考价值。

今天用springboot和oracle的时候遇到以前的老项目保存数据的时候显示报错

Error getting generated key or setting result to parameter object

根据这句话的字面理解意思就是  获取生成的键或将结果设置为参数对象时出错  

看了下网上的解决方法主要是这样

第一种方式:

将useGeneratedKeys="true" 改为 useGeneratedKeys="false",或者将useGeneratedKeys="true"和keyProperty="id"直接删除

看了一下这种方式不适合我 、我没有编写xml文件

第二种方式:

Mybatis版本低的原因造成的、需要配置更搞得版本--我也忽略了

第三种方式:

设置@Options(useGeneratedKeys=true,keyProperty=“id”)主键

useGeneratedKeys=true表示使用数据库自动增长的主键,

keyColumn用于指定数据库table中的主键,

keyProperty用于指定传入对象的成员变量。设置是否使用JDBC的getGenereatedKeys()方法获取主键并赋值到keyProperty设置的对象的属性中,

也就是就是把自增长的主键值赋值给对象相应的属性。也不适合我、因为我没有编写xml和mapper、用的mybatis-plus底层提供了这些方法

最终解决方法:

1)在MybatisPlusConfig配置文件中加入OracleKeyGenerator的bean配置,让mp支持oracle主键策略。


package  io.renren.config;

import com.baomidou.mybatisplus.incrementer.OracleKeyGenerator;
import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * mybatis-plus配置
 *
 * @author lyy 
 * @since  2021-9-17
 */
@Configuration
public class MybatisPlusConfig {

    /**
     * 分页插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }

    /**
     * Sequence主键自增
     */
    @Bean
    public OracleKeyGenerator oracleKeyGenerator() {
        return new OracleKeyGenerator();
    }
}

在每一个实体类Id属性上添加

@TableId(value = “id”, type = IdType.AUTO)
private Long id;

完美解决。。。。。。。。。

以上是关于ORACLE 12C 插入数据遇到 Error getting generated key or setting result to parameter object错误的主要内容,如果未能解决你的问题,请参考以下文章

oracle 11g 和 12c 有啥区别?

安装oracle 12c 遇到如下错误提示[INS-30131]执行安装程序验证所需的初始设置失败。

oracle11g和12c有啥区别?

安装oracle 12c 遇到如下错误提示[INS-30131]执行安装程序验证所需的初始设置失败。

在 Oracle 12c 中插入对象数据

ORA-04036怎么解决oracle12c?