我正面临着一个非常奇怪的情节。
情况就是这样。
我调用控制器方法
controller.updateQuestion(question.id)
现在我使用的控制器
//here question is first retrieved from as def question = Question.get(id)
binddata(question, params)
现在在上面的代码之后我做了
question.validate()
然后检查问题是否有错误。如果是,则返回而不保存,即
question.save(flush:true)
现在这就是我的工作。我调用controller.updateQuestion(question.id)发送有错误的参数(其中一个参数有错误,所以这个函数不应该成功。它不应该更新问题)
奇怪的是它似乎没有达到我所拥有的地步
question.save(flush:true)
然而,它将参数值保存到域对象。
所以,我怀疑的是,binddata(问题,params)正在进行保存吗?
答案 0 :(得分:1)
您有很多选择。一种是如果你进入一个你想要解除变化的状态,就要回滚交易......
class SomeController {
def someAction() {
SomeDomain.withTransaction { tx ->
// retrieve a persistent instance and mutate it
// check to see if everything is ok
if(somethingWentWrong) {
tx.setRollbackOnly()
}
}
}
}