batchUpdate - getUpdateCounts (), возвращающий общую длину, если batchUpdate используется в двух методах - PullRequest
0 голосов
/ 08 октября 2018

Я работаю над требованием, когда мне нужно выполнить два разных пакетных обновления на основе ввода - одно batchUpdate для одного набора входов, выполняющих первое обновление;second batchUpdate для другого набора входов, выполняющих второе обновление.ниже приведен пример кода -

уровень службы -

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

слой дао -

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)
}
}
} 

Это работает нормально, за исключением случаев, когда в executeBatchUpdate2 есть какой-либо сбой,UpdateCounts выглядит так, чтобы содержать счетчики обеих операций batchUpdate, т.е. если первый метод вызывается с 3 входами, а второй вызывается с 4 входами.Если есть ошибка во втором методе в утверждении 2;печатается следующее -

Statement failed - 5 

что я ожидаю -

Statement Failed - 2 

Я использую весеннюю загрузку 1.5.6 с Oracle 11g.Я пытался поместить @Transactional на оба метода, но это тоже не сработало.Я застрял в этом в течение последних 3 дней;Любая помощь высоко ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...