Spring @Transactional - Commit не виден после возврата метода?JAVA

Программисты JAVA общаются здесь
Anonymous
Spring @Transactional - Commit не виден после возврата метода?

Сообщение Anonymous »

Я работаю над модульным приложением Java с использованием Spring 5.1.20.release , где A Core Module используется несколькими конкретными клиентскими экземплярами. Каждый экземпляр имеет свою собственную конфигурацию и бизнес -правила.
В одном конкретном потоке я сталкиваюсь с странной проблемой с @transactional . />

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

@Service
public class OrderRetryFacade {

private final OrderService orderService;
private final OrderProcessingStrategy orderProcessingStrategy;

public OrderRetryFacade(OrderService orderService, OrderProcessingStrategy orderProcessingStrategy) {
this.orderService = orderService;
this.orderProcessingStrategy = orderProcessingStrategy;
}

public void handleRetry(Order order) {
orderService.saveRetryOrder(order);
orderProcessingStrategy.process(order);
}
}
orderservice сохраняет заказ таким образом:

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

@Service
public class OrderServiceImpl implements OrderService {

private final OrderRepository orderRepository;

public OrderServiceImpl(OrderRepository orderRepository) {
this.orderRepository = orderRepository;
}

@Override
@Transactional
public void saveRetryOrder(Order order) {
orderRepository.save(order);
}
}
Позднее, другой компонент (запускаемый асинхронно через Apache Camel) пытается извлечь порядок по идентификатору из базы данных. OrderprocessingStrategy.process (order) вызов приводит к неудаче - потому что Другой компонент не может найти порядок в базе данных .
Мы получаем nullpointerexception , потому что порядок не может быть получен с помощью ID на данный момент. /> Насколько я понимаю, было то, что, как только метод, аннотированный с помощью @transactional < /code>, изменения сохраняются и привержены базе данных. Spring? практики?

Подробнее здесь: https://stackoverflow.com/questions/795 ... hod-return

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