正常情况根据序列生成主键是这么写的

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY,generator = "select  序列名称.nextval from dual")

但是有一天我同事这样写不行了,我找遍了所有可能的问题

发现,它居然在执行新增语句后,再执行序列注入主键的查询,这。。。心态蹦了啊

 

解决办法:

在xxxApplication.java (就是自己的程序入口)
第一步: 注释调以前的@MapperScan("com.xxx.xxxx.mapper")

第二步:在xxxApplication.java 中增加一下方法,目的是在新增之前执行序列生成

    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer configurer = new MapperScannerConfigurer();
        // 修改为自己的mapper包路径
        configurer.setBasePackage("com.xxx.xxxx.mapper");
        Properties properties = new Properties();
        // 在新增之前执行序列生成
        properties.setProperty("order", "before");
        configurer.setProperties(properties);
        return configurer;
    }

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐