是否可以从列表中保留所有对象,除了在grails中失败的对象。如果有,怎么样?

时间:2017-03-16 10:24:08

标签: grails gorm transactional

我的目标是防止从列表中回滚所有对象,以防万一发生运行时异常。

我有两个域类

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实例时发生异常,它将回滚支付和订单的所有实例。

我该如何解决呢。

1 个答案:

答案 0 :(得分:0)

如果您创建付款的代码(可能是服务?)是如此顶级的东西,您甚至可以展示它的一小部分样本,那么很难提出建议。

但无论如何,您可以尝试将@Transactional注释添加到整个服务类,但不是某些方法:

@Transactional
public someMethod() {
    //some logic
}

public createPayment() {
    //the logic that you're afraid to share
}

因此不应回滚createPayment()方法。