2017-03-16 30 views
0

我的目标是防止从列表中回滚所有对象,以防发生运行时异常。是否有可能从列表中保留所有对象,除了在grails中失败的对象。如果是的话如何?

我有两个领域类

class Payment { 
    String orderNo; 
    String transactionId; 
    String orderTotal; 
    Date paymentDate; 
} 

class Order extends { 
    static hasMany = [items: ItemModel]; 
    String orderNo; 
    String customerNumber; 
    Date orderDate; 
} 

当我通过订单的对象列表迭代, 在侧createOrder()命令的新实例被创建 然后我打电话makePayment()在其新实例付款已创建。

它工作正常,如果没有例外。

但是,如果在保存Payment实例时发生异常,它将回滚支付和订单的所有实例。

我该如何解决这个问题。

回答

0

如果您的代码(可能是服务?)创建付款是一个顶级的sercret事物,甚至不能显示一小部分样本,那么很难提出建议。

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

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

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

所以createPayment()方法不应该被回滚。

相关问题