【发布时间】:2018-08-20 14:59:48
【问题描述】:
到目前为止,我的理解是,当您使用 @Transactional 注释时,任何失败都会导致操作回滚到之前的状态。我有这个方法,它使用 spring PagingAndSortingRepository 接口将项目添加到引用中。
@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 注释。可能是什么问题,我能做些什么来解决它?
【问题讨论】:
-
你的问题是什么?
-
可能是什么问题,我能做些什么来解决它?
-
好的,您是否已配置为在您的 spring 配置中使用事务管理器?你能展示你的弹簧配置吗?
-
我正在使用 Springboot。是否需要任何配置才能完成这项工作?我一直在使用这个spring.io/guides/gs/managing-transactions 作为参考。
-
"@Transactional 注解任何失败都会导致操作回滚到之前的状态" -- 这不是真的,只有未经检查的异常才会被默认回滚。
标签: java spring spring-boot spring-data-jpa spring-transactions