Я пытаюсь использовать функцию управления декларативными транзакциями, предоставляемую Spring. Я установил конфигурацию Spring и bean-компоненты, как описано в справочной документации (включая AOP, пространства имен tx и использование тега <tx:annotation-driven />
), и я использую аннотацию @Transactional для метода, который я хочу сделать транзакционным.проблема с использованием @Transactional аннотация
Вот как выглядит код:
public interface Worker {
public workOnEvents(List<Events> eventsForACustomer);
}
public class WorkerImpl {
@Transactional
public workOnEvents(List<Events> eventsForACustomer) {
for(Event event : eventsForACustomer) {
// get DAO's based on event types at runtime,
// so we will have different DAO's acting within this loop
DAOFactory.getDAO(event.getType()).persistEvent(event);
}
}
}
Теперь я хочу, что если какие-либо из DAO, в приведенной выше цикле не может обрабатывать событие, все изменения, внесенные в базу данных другого DAO, которые пришли в цикле до этого, нужно откат.
Итак, чтобы проверить откат, я взял список некоторых событий (e1, e2, e3), которые приведут к сбору DAO (d1, d2, d3), а затем я намеренно выкидываю исключение во время выполнения в метод persistEvent DAO d2. Тем не менее, результатом я получаю, что программа завершается без перехода к событию e3 в цикле, а не с обработкой созданного исключения. Кроме того, данные, сохраненные DAO d1, не откатываются назад.
Пожалуйста, дайте мне знать, что я могу делать неправильно здесь?
Пожалуйста, добавьте журналы. – Padmarag
Покажите фабрику Dao и произвольный класс DAO – Bozho
Я отправлю код DAO, как только я составу один :) ... я хочу сказать, что это код, принадлежащий моей компании, и я опубликовал образец код здесь, который в основном моделирует то, что происходит. Что касается очистки в коде DAO, я проверил это, и это не тот случай. Могло ли это повлиять на настройки db config или Hibernate, установленные по умолчанию в моем приложении. Тем не менее, я вернусь с некоторым примером кода, который может как можно лучше смоделировать мою ситуацию. – abhinav