Oracle:使用 spring jdbcTemplate 将数字添加到现有列值

Oracle: Add a number to an existing column value using spring jdbcTemplate

我有一个 Oracle table 如下:

Request_id(VARCHAR2) | batch_id(VARCHAR2) | total_records(NUMBER(3,0)) | updated_records(NUMBER(3,0))  
12345                |       1            |         3                  |           0

现在在我的 SpringBoot 应用程序中,每当我的批处理中的每条记录都完成处理时,我正在做:

String query = "UPDATE BATCH_STATUS set UPDATED_RECORDS = (1 + UPDATED_RECORDS) WHERE REQUEST_ID = ? AND BATCH_ID = ?";  
jdbcTemplate.update(query, ps -> {  
  ps.setString(1, requestId);  
  ps.setString(2, batchId);  
  
  ps.executeUpdate();  
});

执行完后,updated_records的值变为2。

但是如果我 运行 在 SQL Developer 中使用相同的查询,它工作正常。

为什么会这样,如何实现我的目标?

似乎 jdbcTemplate.update 方法在内部进行了两次加法,因此输出了这样的结果。

相反,如果我使用 execute 方法,那么它工作正常。

String query = "UPDATE BATCH_STATUS set UPDATED_RECORDS = (1 + UPDATED_RECORDS) WHERE REQUEST_ID = ? AND BATCH_ID = ?";  
jdbcTemplate.execute(query, (PreparedStatementCallback<Boolean>) ps -> {

    ps.setString(1, requestId);
    ps.setString(2, batchId));

    return ps.execute();
});