Я пытаюсь реализовать декларативное управление транзакциями в настройках Spring + Struts + Hibernate.
Это часть моего applicationcontext.xml
<property>
<props>
<prop key="foodoo*">PROPAGATION_REQUIRED,-FooException</prop>
</props>
</property>
Я определил два открытых метода в своем классе FooService -> UpdateFoo, foodooTest
и два приватных метода (которые имеют логику обновления) -> Test1 и Test2
Звонок идет как:
UpdateFoo->foodooTest->Test1
->Test2
(foodooTest должен инициировать транзакцию)
Я создаю боб
FooService fooService = (FooService)context.getBean("fooService");
//and call
fooService.UpdateFoo();
Test2 генерирует FooException, и, следовательно, я ожидаю, что транзакция будет откатываться. Но это не так. Фиксация происходит в каждом Test1 и Test2 (до исключения).
Я использую Hibernate getHibernateTemplate.Merge () для обновлений. Мой двигатель БД - InnoDB.
Я не уверен, что мне здесь не хватает.