(Quick Reference)

withTransaction

Purpose

Allows programmatic transactions using Spring's Transaction Abstraction and a block.

Examples

Account.withTransaction { status ->
    def source = Account.get(params.from)
    def dest = Account.get(params.to)

def amount = params.amount.toInteger() if (source.active) { source.balance -= amount if (dest.active) { dest.amount += amount } else { status.setRollbackOnly() } } }

Description

The withTransaction method uses a block or closure that gets passed Spring TransactionStatus object. 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.