grails mongo事务回滚与save(flush:true)?

时间:2014-06-26 05:35:42

标签: mongodb grails gorm

我有一个issueInstance,它有很多issueItemInstances,

和一个issueItemInstance有一个receiptItemInstance(多对一),

当issueInstance.save(flush:true,failOnError:true),

我想通过循环使用issueItemInstances重新计算receiptItemInstance.quantity以获取所有其他已保存的issueItemInstance.quantity(多对一),

以及何时!receiptItemInstance.validate()(例如数量太大),

我想回滚,

但它似乎不能与1.static transactional =' mongo'和2. Issue.withTransaction

抛出异常时,不会删除issueInstance和issueItemInstances。

如果仅使用save(),则不会重新计算正确,因为尚未保存issueItemInstance。

是否有任何提示或任何方式,但手动?

我使用MongoDB GORM':mongodb:3.0.1'

非常感谢,

标记

1 个答案:

答案 0 :(得分:0)

使用:

Issue.withTransaction { status ->
    Issue issueInstance // Get issue instance
    def receiptItemInstance // get receipt item instance

    if (!receiptItemInstance.validate()) {
        status.setRollbackOnly()
        return   // Exit the transaction block
    }
    // Conitune with your code
}