The Grails Framework 6.0.0

(Quick Reference) ## withTransaction ### Purpose Allows programmatic transactions using Spring’s Transaction abstraction. ### Examples
    Account.withTransaction { status ->

        def source = Account.get(params.from)
        def dest = Account.get(params.to)

        int amount = params.amount.toInteger()
        if (source.active) {
            source.balance -= amount

            if (dest.active) {
                dest.amount += amount
            }
            else {
                status.setRollbackOnly()
            }
        }
    }
Named arguments may optionally be passed as an argument to control attributes of the transaction.
    // the keys in the Map must correspond to properties
    // of org.springframework.transaction.support.DefaultTransactionDefinition

    Account.withTransaction([propagationBehavior: TransactionDefinition.PROPAGATION_REQUIRES_NEW,
                             isolationLevel: TransactionDefinition.ISOLATION_REPEATABLE_READ]) {
        // ...
    }
### Description The `withTransaction` method accepts a Closure with a TransactionStatus argument. The `TransactionStatus` object can be used to programmatically control rollback of the transaction. Refer to the user guide section of Programmatic Transactions for more information. | Quick Reference (hide)