(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.DefaultTransactionDefinitionAccount.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.