batchUpdate-如果在两种方法中使用batchUpdate,则getUpdateCounts()返回总长度

时间:2018-10-08 07:33:32

标签: spring-data jdbctemplate batch-updates

我正在处理一个需要根据输入执行两个不同的批处理更新的需求-一个批处理更新用于一组执行第一次更新的输入;第二批对执行第二次更新的其他输入集进行更新。以下是示例代码-

服务层-

performUpdate(List input) {
dao.performBatchUpdate1(<filteredInputList>);
dao.performBatchUpdate2(<filteredInputList>);
}

dao层-

performBatchUpdate1(List inputList) {
String query = "update query1";
try
{
jdbcTemplate.batchUpdate(query, batchPreparedStatementSetter)
} catch(DataAccessException e) {
if(e.getCause() instanceof BatchUpdateException) {
int [] updateCounts = ((BatchUpdateException)e.getCause()).getUpdateCounts();
logger.error("Statement failed-"updateCounts.length+1)
}


performBatchUpdate2(List inputList) {
String query = "update query2";
try
{
jdbcTemplate.batchUpdate(query, batchPreparedStatementSetter)
} catch(DataAccessException e) {
if(e.getCause() instanceof BatchUpdateException) {
int [] updateCounts = ((BatchUpdateException)e.getCause()).getUpdateCounts();
logger.error("Statement failed-"updateCounts.length+1)
}
}
} 

这正常工作,除非performBatchUpdate2中有任何故障。 updateCounts看起来包含两个batchUpdate操作的计数,即,如果第一个方法调用了3个输入,第二个方法调用了4个输入。语句2的第二种方法是否失败;以下正在打印-

Statement failed - 5 

我期望的是-

Statement Failed - 2 

我在Oracle 11g中使用Spring Boot 1.5.6。我尝试将@Transactional放在这两种方法上,但均无效。最近三天我一直被困在里面;非常感谢您的帮助。

0 个答案:

没有答案