2017-03-16 34 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()方法不應該被回滾。

相關問題