grails - 是否可以持久保存列表中的所有对象,但失败的对象除外。如果是,怎么办?

标签 grails gorm transactional

我的目标是防止在发生运行时异常的情况下从列表回滚所有对象。

我有两个 Realm 类(class)

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

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

当我遍历Order对象列表时,
在侧面createOrder()中创建Order的新实例
然后我调用makePayment()在其中创建Payment的新实例。

如果没有异常(exception),它将很好地工作。

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

我该如何解决。

最佳答案

如果您创建付款的代码(可能是服务?)是最 secret 的东西,即使您只看一小部分样本,也很难提出建议。

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

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

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

因此,不应回退createPayment()方法。

关于grails - 是否可以持久保存列表中的所有对象,但失败的对象除外。如果是,怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42831266/

相关文章:

Grails 2.3 IntegrationSpec 不能是事务性错误

grails - Grails-@Transactional,连接为只读

javascript - Grails-通过单击img标签设置g:select值

grails - 引起多对多关注

grails - Grails GORM加载对象集合问题

grails - 具有命名参数的findAll异常

java - 一个应用程序中有多个 Spring @Transactional 注释?

grails - Grails:如何在同一张表中制作一个SAVE按钮并使之工作?

java - 打开 zip 文件时出错或缺少 : C:/Program 的 JAR list

grails - Grails,gsp中的调用 Controller 方法,在表单中设置默认用户