ОШИБКА: текущая транзакция прервана, команды игнорируются до конца блока транзакции: spring jdbctemplate - PullRequest
0 голосов
/ 16 января 2020

Я запускаю несколько скриптов вставки один за другим, используя шаблон JDB C. Если в промежутке между инструкциями произошел сбой, произошла следующая ошибка для следующего набора операторов.

Причина: org. postgresql .util.PSQLException: ОШИБКА: текущая транзакция отменена, команды игнорируются до конца блок транзакции

код:

@Override
public void fillUsers(List<User> users)
{
   for (User userObj : users)
   {
      insertUser(userObj);  
   }
}


@Transactional
private void insertUser(User userObj)
{
   try
   {
       template.update("INSERT INTO USER (USERID, NAME, ADDRESS, PNO) VALUES (?, ?, ?, ?)", 
       userObj.getUserId(), userObj.getName(), userObj.getAddress(), userObj.getPno());
    }
    catch (DataIntegrityViolationException e)
    {
       LOG.info("Duplicate record exists for user");
       updateUser(userObj);
     }
 }

@Transactional
private void updateUser(User userObj)
{
    template.update(".....");
}
...