我很困惑因为当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);
}