Я запускаю несколько скриптов вставки один за другим, используя шаблон 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(".....");
}