微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。