Spring Boot: включение аудита Envers между вложенными транзакциямиJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Spring Boot: включение аудита Envers между вложенными транзакциями

Сообщение Anonymous »

Я работаю с Spring Boot и Hibernate Envers, пытаясь настроить конкретную транзакцию и поведение аудита. Вот моя текущая настройка:

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

@Service
public class MyService {

@Transactional(rollbackFor = Exception.class)
public void parentMethod() {
childMethod1();
childMethod2();
}

@Transactional(rollbackFor = Exception.class)
private void childMethod1() {
// Creates some records that will be updated in childMethod2
}

@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
private void childMethod2() {
// Updates records created in childMethod1
}
}

Чего я пытаюсь достичь:

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

childMethod1
и childMethod2 должны выполняться в отдельных транзакциях
Необходимо фиксировать записи аудита Envers для обновлений, сделанных в childMethod2 записей, созданных в childMethod1
Если childMethod2 не удалось, childMethod1 также следует откатить.

Что я пробовал:

Добавлено распространение = Распространение.REQUIRES_NEW на childMethod2 в надежде, что он создаст новую транзакцию и захватит записи аудита, но это не решило проблему.
Рассмотрено с использованием REQUIRES_NEW< /code> для обоих дочерних методов и вручную обрабатывать откат childMethod1 в случае сбоя childMethod2, но этот подход не обеспечивает истинную атомарность, поэтому он не является жизнеспособное решение
Транзакции работают правильно с точки зрения изоляции, но записи аудита по-прежнему не создаются.
Текущее поведение:
Транзакции, кажется, работают, но я не получаю записи аудита Envers для обновлений, сделанных в childMethod2
Поведение отката работает должным образомКак я могу гарантировать, что Envers фиксирует записи аудита между этими вложенные транзакции?
Будем благодарны за любую помощь!

Подробнее здесь: https://stackoverflow.com/questions/792 ... ansactions
Ответить

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

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

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

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

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