У меня есть следующие классы:
public interface GarageRepository extends PagingAndSortingRepository<Garage, Integer> {}
public class GarageBO {
private GarageRepository garageRepository;
public void updateGarage(Garage garage) {
try {
garageRepository.save(garage);
} catch (Exception e) {
throw BoozinaExceptions.getCodeException(garage, e);
}
}
}
public class GarageFacade implements GarageService {
private GarageBO garageBO;
@Transactional
public void updateGarage(Garage garage) {
garageBO.updateGarage(garage);
}
}
Предположим, что я пытаюсь обновить гараж, и возникает уникальное нарушение.
Когда я вызываю updateGarage из GarageFacade с аннотацией @Transactional
, гаражный репозиторий не выдает никаких исключений.
Когда я вызываю тот же метод без @Transactional
аннотация, GarageRepository выдает уникальное исключение нарушения, и теперь я могу преобразовать исключение, используя BoozinaExceptions.getCodeException(garage, e)
;
Такое поведение происходит потому, что когда у меня есть аннотация @Transactional
, исключение будет выдано, когда данные Spring jpa выполнят фиксацию. Это происходит после выполнения GarageBO.updateGarage.
Но мне нужно преобразовать уникальное нарушение. Как я могу это сделать?
Как обработать исключение spring после фиксации, а затем преобразовать в мое исключение?