У меня есть spring, внедряющий сервис в себя, чтобы позволить сервису совершать транзакционные вызовы самому себе. К сожалению, я обнаружил, что метод require_new, который генерирует исключение NullPointerException и перехватывается, не откатывает новую транзакцию. Внешняя транзакция не прерывается, чего я и хочу, но у меня возникают проблемы с объяснением, почему не откатывается требуемая новая транзакция. Любые идеи?
@Service(value="orderService")
@Transactional
public class OrderServiceImpl implements OrderService {
@Resource
private OrderService orderService; // transactional reference to this service
public void requiredTransMethod(){
try {
orderService.requiresNewTransMethod();
}catch(Throwable t){
LOG.error("changes from requiresNewTransMethod call should be rolled back right?", t);
}
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void requiresNewTransMethod() {
// database changes that are NOT rolled back
throw new NullPointerException("bla bla bla");
}
}