Распространение. REQUIRES_NEW не работает должным образом - PullRequest
0 голосов
/ 15 мая 2019

У меня есть следующий сценарий.У меня есть один метод транзакции, который вызывает другой метод транзакции, который имеет распространение REQUIRED_NEW.если первый метод получает исключение, то второй метод (распространение REQUIRED_NEW) также выполняет откат.

Я использую JPA, Spring-boot и chainedKakfkaTransactionManager

Я пытался изменить значение chainedKakfkaTransactionManager по умолчанию, но по-прежнему нетluck

вот мой код:

@Service
@Transactional(readOnly = false)
public class ComponentServiceImpl implements ComponentService {
@Autowired
private UserRepository userRepository ; 
@Override
@Transactional
public boolean validateName(String name) {
try{
  retrun userRepository.validate(name);  
  }catch(Exception e){
   handleError(name);
   throw new Exception("user not valid");
  }
}
@Override
@Transactional(propagation=Propagation.REQUIRES_NEW)
public boolean handleError(String name) {
          userRepository.update(name);
}
}

Откат происходит и в методе handleError.есть ли ошибка кода?

1 Ответ

0 голосов
/ 16 мая 2019

Спасибо @ DarrenForsythe,

Создав объект autowire для того же класса (самоссылка), он сработал для меня

    @Service
    @Transactional(readOnly = false)
    public class ComponentServiceImpl implements ComponentService {
    @Autowired
    private UserRepository userRepository ; 

// CREATE SELF REFRENCE
    @Autowired
    private ComponentService componentService;

    @Override
    @Transactional
    public boolean validateName(String name) {
    try{
      retrun userRepository.validate(name);  
      }catch(Exception e){
       componentService.handleError(name);
       throw new Exception("user not valid");
      }
    }
    @Override
    @Transactional(propagation=Propagation.REQUIRES_NEW)
    public boolean handleError(String name) {
              userRepository.update(name);
    }
    }
...