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) 个答案