Сделки весной

Я запутался, потому что, когда 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

Mohsen 08.12.2018 22:16

Да, добавил но все равно отката нет

wwww 08.12.2018 22:52
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
36
0

Другие вопросы по теме