有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Oracle DB 19c返回的自动生成密钥的java负值

我们使用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));  
        }

例如,对于两个实体,resultset返回的ID类似于(具有负值): 实体ID:-4.3692522E-31

对于两个实体,返回的ID如下所示
实体ID:1591017024

所以问题是为什么会出现结果集。getBigDecimal()在不同的时间返回不同的值。实体的ID不能为负,因为标识列的最小值为1

它是否与getAutoGeneratedKeys()方法有关


共 (0) 个答案