Исключение RuntimeException, возникающее после выполнения метода @Transactional, препятствующее фиксации метода @TransacJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Исключение RuntimeException, возникающее после выполнения метода @Transactional, препятствующее фиксации метода @Transac

Сообщение Anonymous »

У меня есть нетранзакционный метод, вызывающий транзакционный метод, а затем выдающий исключение RuntimeException после выполнения транзакционного метода.
Вот структура моего кода:
ValidateCodeService:

Код: Выделить всё

public void callingMethod(){
///some logic
if (codeReceivedFromUser != codeStoredInDB){
codeDTO.setNoOfRetries (codeDTO.getNoOfRetries() -1 );
codeRepository.update(codeDTO);
throw new RuntimeException(CodeError.CDE1);
}
}
>Репозиторий кода:

Код: Выделить всё

public class CodeRepository extends SuperRepository {
@Transactional
public codeDTO update (codeDTO dto){
///some logic
super.merge(TransformDTOToEntity(dto));
return dto;
}
}
Суперрепозиторий:

Код: Выделить всё

public class SuperRepository{
public void merge(T entity){
getEm.merge(entity);
getEm.flush();
}
}
Когда я проверяю свои журналы, я вижу, что запрос сбрасывается, но затем сразу же появляется журнал ошибок без фиксации:
спящий режим flash

[мой запрос на обновление]

ошибка журнала

[мой CodeError.CDE1]
Хотелось бы отметить, что я также вызываю CodeRepository.update из другого нетранзакционного метода, который не вызывает ошибок, и обновление фиксируется, как ожидалось.
Журнал для этот вызов выглядит так
hibernatelush

[мой запрос на обновление]

hibernate commit

JDBC-фиксация
Вопрос:
Почему транзакция не фиксируется после создания RuntimeException в вызывающем методе, хотя она успешно фиксируется в других случаях? Как я могу гарантировать, что мое обновление будет зафиксировано до того, как будет создано исключение?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ing-the-tr
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»