Oracle DB 19c 返回的自动生成键的负值

问题描述

我们使用 Oracle 数据库 (19c) 中的 IDENTITY 列作为表的主键。

对于一些内部逻辑,我们使用 getAutoGeneratedKeys() 来获取创建的实体的 ID。但是结果集中返回的ID存在一些差异。

以下是获取自动生成密钥的代码

String keyCols[] = {"ID"};  
        ps = connection.prepareStatement(queryToInsertEntity,keyCols);  
        ps.executeBatch();  
        resultSet = ps.getGeneratedKeys();  
        while (resultSet.next()) {  
            logger.trace("Entity ID:{}",resultSet.getBigDecimal(1));  
        }

例如,对于几个实体,结果集返回的 ID 类似于一个(带有负值): 实体 ID:-4.3692522E-31

而且,对于几个实体,返回的 ID 如下
实体 ID:1591017024

所以问题是为什么 resultSet.getBigDecimal() 在不同的时间返回不同的值。实体永远不能有负 ID,因为 Identity 列的最小值为 1。

是否与 getAutoGeneratedKeys() 方法有关?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)