gpt4 book ai didi

java - @Transactional 和 Spring Data

转载 作者:行者123 更新时间:2023-12-02 11:31:53 25 4
gpt4 key购买 nike

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

@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注释并手动测试操作是否会回滚(通过不选择任何供应商)时,其他属性(例如quoteDate、PurchaseRequest)仍然存储在数据库中。

我感觉我没有使用@Transactional 注释。可能是什么问题以及我可以采取什么措施来解决它?

最佳答案

感谢您的回复。

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

The bean 'purchaseRequestServiceImpl' could not be injected as a 'com.eprocurement.service.PurchaseRequestServiceImpl' because it is a JDK dynamic proxy that implements: com.eprocurement.service.PurchaseRequestService Action: Consider injecting the bean as one of its interfaces or forcing the use of CGLib-based proxies by setting proxyTargetClass=true on @EnableAsync and/or @EnableCaching.

通过将 @Transactional 注释放在我的服务接口(interface)上,并使用 @autowiring 来代替 @autowiring 我的实现类。

关于java - @Transactional 和 Spring Data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49237800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com