nacos Suggest Replace [Statement.RETURN_GENERATED_KEYS] to new String[]{"id"}

apeeds0o  于 2022-11-13  发布在  Nacos
关注(0)|答案(3)|浏览(110)

Describe the bug
【TenantCapacityPersistService 】 class method 【insertTenantCapacity】current using Statement.RETURN_GENERATED_KEYS exist other database type not incompatible question。
TenantCapacityPersistService类中的insertTenantCapacity方法,为了获取返回的主键,使用了这方法,这个方式在其他数据库上存在不兼容的问题,建议更改

Expected behavior
为了以后方便,期待这块可以改成通用的代码。

Actually behavior
Suggest replace code is:
建议替换代码如下:

PreparedStatement ps = connection.prepareStatement(sql, PrimaryKeyConstant.RETURN_PRIMARY_KEYS);

public class PrimaryKeyConstant {

    /**
     * replace Statement.RETURN_GENERATED_KEYS into id key,
     */
    public static final String[] RETURN_PRIMARY_KEYS = new String[]{"id"};

}

我可以提交一个PR吗

brqmpdu1

brqmpdu11#

我觉得可能有问题:

  1. Statement.RETURN_GENERATED_KEYS 是JDBC定义的标准,数据库不兼容我觉得是数据库的问题比较大,是否需要做兼容得再看看
  2. 使用你的新方式我觉得可能的问题是如果表的主键字段不是id怎么办
cbwuti44

cbwuti442#

我觉得可能有问题:

1. Statement.RETURN_GENERATED_KEYS 是JDBC定义的标准,数据库不兼容我觉得是数据库的问题比较大,是否需要做兼容得再看看

2. 使用你的新方式我觉得可能的问题是如果表的主键字段不是id怎么办

目前系统中,用到的几处(好像是3处吧)Statement.RETURN_GENERATED_KEYS都是具体业务模块的,不多,基本主键都是id,如果不一样就多定义几个常量就行了。
我之所以建议改这个,也是希望多数据源出现之前,把系统那些明显的不兼容的方式,更改为通用的方式。

wdebmtf2

wdebmtf23#

可以讨论一下,我觉得还是面向标准来做是最好的,直接设置逐渐key的名字也是标准接口的话,应该问题也不大。

相关问题