【发布时间】:2019-11-25 16:29:17
【问题描述】:
我有一个保存对象的方法,但我需要使用 API 并保存它们的返回。如果 API 返回“未授权”,我需要回滚事务,但我想保留返回。
例如
@Resource
private SessionContext context;
@Transactional
public Invoice createSale(SaleDTO saleDTO) {
this.dao.save(saleDTO);
Send send = this.context.getBusinessObject(Send.class);
Invoice invoice = this.send.send(saleDTO);
if (invoice.isAuthorized()) {
invoice.setSale(saleDTO);
return invoice;
} else {
throw new IllegalArgumentException();
}
}
public class Send implements Serializable {
@Transactional(Transactional.TxType.REQUIRES_NEW)
private Invoice send(SaleDTO saleDTO) {
Invoice invoice;
...
this.dao.save(invoice);
return invoice;
}
}
当我抛出 IllegalArgumentException 时,发票没有保存。我需要保存它。
【问题讨论】:
标签: java transactions rollback jta