У меня проблема с данными Spring JPA и вложенными транзакциями.Ниже приведены два метода вложенной транзакции моего сервиса.
@Service
public UserService {
@Transactional
public User createUser(UserDto userDto) {
....
user = saveUser(user);
sendEmail(user);
....
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public User saveUser(User user) {
return userRepository.save(user);
}
Бывает, что существует один сценарий, когда метод userRepository.save () должен генерировать исключение, но почему-то не генерируется, похоже, что он ожидает завершения родительской транзакции.Я ожидал, что исключение будет сгенерировано в методе saveUser, а метод sendEmail даже не будет выполнен.
Поскольку метод UserService.saveUser
имеет распространение, установленное на Propagation.REQUIRES_NEW
Я ожидал, что транзакция будет зафиксирована (оператор SQL, который должен быть выполнен) и любое исключение, которое распространяется.
Я не настроил ничего, связанного с транзакцией, поэтому я считаю, что режим сброса установлен на AUTO.
Может кто-нибудь определить, чтоя делаю неправильно или в чем мое заблуждение?