Я запутался, потому что, когда visitService перехватывает модель посещения, тогда, когда вызывается findAllByDate, визит появляется в базе данных (но только когда я использую аннотацию @Transactional), а не после visitRepository.save(visit) (я проверял в базе данных), более того, даже если RuntimeException выбрасывается добавленное посещение не ' t откат из базы данных (mysql) как откатить из базы данных и почему findAllByDate(visit.getDate()) добавляет визит в базу данных
@Transactional(isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class)
public Visit save(@Valid Visit visit) {
logger.info("Inside visitService");
visit.setPayed(false);
if (visit.getPrice().intValue() > 1000)
visit.setDiscount(new BigDecimal(0.05));
else visit.setDiscount(new BigDecimal(0.00));
List<Visit> listaWizyt = findAllByDate(visit.getDate());
for (int i = 0; i < listaWizyt.size(); ++i)
System.out.println(listaWizyt.get(i).getId() + " " + listaWizyt.get(i).getDescription() + " " + listaWizyt.get(i).getDate());
if (listaWizyt.size() > 0){
logger.info("Throwed exception by visitService");
throw new RuntimeException("There is already such visit in databse");}
else
logger.info("NOT THROWED exception by visitService");
logger.info("saved by visitService");
System.out.println("zapisane przez visitService");
return visitRepository.save(visit);
}
посетить репозиторий:
public interface VisitRepository extends Repository<Visit, Integer> {
Visit save(Visit visit) throws DataAccessException;
List<Visit> findByPetId(Integer petId);
Visit findById(Integer visitId);
@Transactional(readOnly = true)
List<Visit> findAllByDate(LocalDateTime date);
}
Да, добавил но все равно отката нет




вы настраивали для включения управления транзакциями весной?
@EnableTransactionManagement