我的域类是这样的:
Class Account {
String accountNo
...
def beforeUpdate = {
new AuditTrial(eventName:"update").save()
}
}
在我的应用程序中,有一个块级事务,如下所示:
def updateAccount = {
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()
}
}
}
}
当我尝试调用此updateAccount
方法时,它会产生堆栈溢出异常。似乎是递归调用beforeUpdate
方法。
期待您的价值建议来克服这个问题
答案 0 :(得分:1)
AuditTrail与Account有级联关系吗?这可能会导致问题。
可能发生的另一件事是保存AuditTrail导致会话刷新,这也保存了修改后的Account对象。
您是否尝试过使用afterInsert?