@Transactional(rollbackOn = DataIntegrityViolationException.class)
public void saveLink(String singleLink) {
try{
JobOffer jobOffer = jobOfferRepository.saveAndFlush(JobOffer.builder().id(UUID.randomUUID()).build());
JobLink jobLink = JobLink.builder()
.jobLink(singleLink)
.jobOffer(jobOffer)
.isProcessed(false)
.category("Kotlin")
.id(UUID.randomUUID())
.timeOfAddition(LocalDateTime.now())
.remote(true)
.build();
jobLinkRepository.save(jobLink);
} catch (Exception e){
throw new DataIntegrityViolationException("Exception occured during saving link!");
}
}
Mam problem taki że, w momencie gdy linia
jobLinkRepository.save(jobLink);
wyrzuci wyjątek, to następnie jest ten wyjątek łapany i przechodzimy do bloku catch. W bloku catch jest wyrzucany wyjątek kolejny.
Mam ustawione
@Transactional(rollbackOn = DataIntegrityViolationException.class)
A mimo to JPA nie robi mi rollbacku tej linii kodu.
JobOffer jobOffer = jobOfferRepository.saveAndFlush(JobOffer.builder().id(UUID.randomUUID()).build());
W efekcie czego JobOffer jest zawsze dodawany do bazy i nie ma rollbacku.
Czy mógłby ktoś mi wyjaśnić dlaczego tak się dzieje oraz pomóc? Bardzo dziękuję