我很困惑因为当visitService捕获访问模型然后当调用findAllByDate然后访问出现在数据库中(但只有当我使用 @Transactional annotattion时)才会出现 visitRepository.save(visit) (我从数据库(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);

}