gpt4 book ai didi

grails - 根据某些条件取消/阻止域对象的保存?

转载 作者:行者123 更新时间:2023-12-02 15:13:50 26 4
gpt4 key购买 nike

我需要基于某些属性来阻止或取消域对象的保存。
可以在约束条件下完成吗?

例:
“订单”域对象的状态为“已开发票”,则该订单将不再能够更新。

关于如何解决这个问题有什么建议吗?

最佳答案

我认为没有理由不能仅仅为此使用约束(如您所建议的)。这样的事情应该做

class Order {

String state

static constraints = {

state(validator: {stateValue, self ->

// only check state if this object has already been saved
if (self.id && stateValue == 'invoiced') {
return false
}
})
}
}

如果由于某种原因您不能使用约束,则有以下两种建议:

元编程

使用Groovy的方法拦截功能来拦截对 save()的调用。如果订单没有发票状态,则拦截器应仅将 call 转发至拦截的 save()

Programming Groovy书中有一些很好的例子说明了如何做到这一点。

GORM Activity

GORM提供了在持久对象生命周期中触发的许多 events。可能在 beforeUpdatebeforeValidate事件中阻止了更新对象(我想抛出一个异常会起作用)

关于grails - 根据某些条件取消/阻止域对象的保存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8324251/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com