Как отключить откат транзакции методом в классе включения отката транзакции при весенней загрузке - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть два метода с именами saveNewCustormerDetails и storeFailCustomerSaveDetails. Если какое-либо исключение перейдет в метод saveNewCustormerDetails, то транзакция станет откатом, когда возникнет исключение, мне нужно сохранить сообщение об исключении в базе данных с номером мобильного телефона клиента. Для этого я использую метод storeFailCustomerSaveDetails. но это не работает, потому что откат магазина не позволяет клиентам сохранять детали. Поэтому мне нужно отключить процесс отката только для метода storeFailCustomerSaveDetails. Есть ли способ сделать это?

@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public class CustomerServiceImpl implements CustormerService {

        private final CustomerRepository customerRepository;
        private final CustomerSaveFailsRepository customerSaveFailsRepository;


    @Autowired
    public CustomerServiceImpl(CustomerRepository customerRepository, CustomerSaveFailsRepository customerSaveFailsRepository){
            this.customerRepository = customerRepository; 
            this.customerSaveFailsRepository = customerSaveFailsRepository;
    } 

    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
        @Override
        public void saveNewCustormerDetails(CustomerDTO customerDTO) {
        try{

            CustomerEntity customerEntity = new CustomerEntity();
            BeanUtils.copyProperties(customerDTO, customerEntity);  
            customerRepository.save(customerEntity);

        }catch(Exception e){

            LOGGER.error("Method saveNewCustormerDetails : " + e.getMessage(), e);
            storeFailCustomerSaveDetails(customerDTO, e);
                        throw e;    

        }
    }

    private void storeFailCustomerSaveDetails(CustomerDTO customerDTO, Exception ex){
        try{
                CustomerSaveFailsEntity customerSaveFailsEntity = new CustomerSaveFailsEntity(customerDTO.getContact(), e.getMessage()); 
                customerSaveFailsRepository.save(customerSaveFailsEntity);

            }catch(Exception e){

            LOGGER.error("Method storeFailCustomerSaveDetails : " + e.getMessage() ,e);

        }
    }
}


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...