@Transactional和Spring数据

时间:2018-03-12 14:33:22

标签: java spring spring-boot spring-data-jpa spring-transactions

到目前为止我所理解的是,当你使用@Transactional注释时,任何失败都会导致操作回滚到之前的状态。我有这个方法,它使用spring PagingAndSortingRepository接口将Items添加到引号中。

@Override
        public Quotation createNewQuotation(PurchaseRequest purchaseRequest, Supplier supplier) {
        Quotation quotation = new Quotation();
        Date now = new Date(Calendar.getInstance().getTimeInMillis());
        quotation.setQuotationDate(now);
        quotation.setPurchaseRequest(purchaseRequest);
        quotation.setSupplier(supplier);
        quotationRepository.save(quotation);
        return quotation;

    }

当我在整个类上放置一个@Transactional注释并手动测试操作是否会回滚(通过不选择任何供应商)时,其他属性如quotationDate,PurchaseRequest仍然存储在数据库中。

我感觉我没有使用@Transactional注释。可能是什么问题,我该怎么做才能解决它?

1 个答案:

答案 0 :(得分:1)

感谢您的回复。

我通过在我的主课上添加@EnableTransactionManagement来完成这项工作。 我解决了

  

bean' purchaseRequestServiceImpl'无法注入   ' com.eprocurement.service.PurchaseRequestServiceImpl'因为它是一个   实现的JDK动态代理:   com.eprocurement.service.PurchaseRequestService行动:考虑一下   将bean注入其接口之一或强制使用   基于CGLib的代理通过在@EnableAsync上设置proxyTargetClass = true   和/或@EnableCaching。

@Transactional注释放在我的服务接口上,@autowiring而不是@autowiring我的实现类。