问题描述
我们使用 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 (将#修改为@)