我的目标是防止从列表中回滚所有对象,以防万一发生运行时异常。
我有两个域类
class Payment {
String orderNo;
String transactionId;
String orderTotal;
Date paymentDate;
}
class Order extends {
static hasMany = [items: ItemModel];
String orderNo;
String customerNumber;
Date orderDate;
}
当我遍历Order对象列表时, 在side createOrder()中创建了Order的新实例 然后我调用makePayment(),其中创建了新的Payment实例。
如果没有例外,它可以正常工作。
但是,如果在保存Payment实例时发生异常,它将回滚支付和订单的所有实例。
我该如何解决呢。
答案 0 :(得分:0)
如果您创建付款的代码(可能是服务?)是如此顶级的东西,您甚至可以展示它的一小部分样本,那么很难提出建议。
但无论如何,您可以尝试将@Transactional注释添加到整个服务类,但不是某些方法:
@Transactional
public someMethod() {
//some logic
}
public createPayment() {
//the logic that you're afraid to share
}
因此不应回滚createPayment()方法。