GBase 8a
其他
问答

8a 数据库无法使用无法通过getGeneratedKeys获取key

发表于2026-08-03 09:44:02182次浏览5个评论

【GBase版本】:Gbase8a-9.5.3.28

【操作系统】:

【CPU】:

【问题描述】*:这里的keyholder获取不到自增主键的值,使用jdbc insert 自增主键的表,无法通过getGeneratedKeys获取到插入自增主键的值,但是数据库里是有自增主键的值的。我看之前有一个帖子提到过这个问题,等待新版本驱动包解决这个问题,请问哪个版本解决了这个问题呢?我现在的驱动版本是9.5.0.5

@Override
public long addConfigInfoAtomic(final long configId, final String srcIp, final String srcUser,
                                final ConfigInfo configInfo, Map configAdvanceInfo) {

    KeyHolder keyHolder = ExternalStorageUtils.createKeyHolder();

    ConfigInfoMapper configInfoMapper =
            mapperManager.findMapper(dataSourceService.getDataSourceType(),
                    TableConstant.CONFIG_INFO);
    try {
        jt.update(
                connection -> createPsForInsertConfigInfo(srcIp, srcUser, configInfo,
                        configAdvanceInfo, connection,
                        configInfoMapper),
                keyHolder);
        Number nu = keyHolder.getKey();
        if (nu == null) {
            throw new IllegalArgumentException("insert config_info fail");
        }
        return nu.longValue();
    } catch (CannotGetJdbcConnectionException e) {
        LogUtil.FATAL_LOG.error("[db-error] " + e, e);
        throw e;
    }
}

 

 

 

悬赏:10吉币
回答被发帖人采纳后可获得赏金

评论

登录后才可以发表评论
GBase_寒冰发表于 2个月前
8A版本9.5.3.28.18.r1_patch.9后已解决getGeneratedKeys获取自增ID问题,如使用版本大于这个版本,可在网站下载最新的驱动尝试;否则需要升级集群版本。
最佳回答
siy发表于 2个月前
@GBase_寒冰:我查看version()返回的结果是9.5.3.28.12509af27,这只能升级集群版本吗
1cyf发表于 2个月前
@siy:需要升级集群版本
用户头像
GBase用户28017发表于 2个月前
这是Java代码啊。
sherq1989发表于 27天前
@GBase用户28017:是的