有一种方法可以暂时禁用特定域类的beforeInsert事件吗?我需要执行以下步骤:
saveAs例程在特定对象中执行深度克隆,并创建具有相同数据的新对象。请参阅此答案以了解克隆:How can I duplicate a domain object in Grails?
禁用beforeInsert的原因:由于克隆了对象,因此在执行saveAs例程时,不需要执行beforeInsert内的代码。
Grails版本:2.5.0
更新
我忘了提到我想避免更改我的Domain Class来实现这种行为。
答案 0 :(得分:3)
您可以在域类中创建一个瞬态布尔字段,并根据此字段的值运行您的beforeInsert代码,例如;
class Person{
Boolean runBeforeInsert = true
static transients = ['runBeforeInsert']
def beforeInsert(){
if(runBeforeInsert){
SOME CODE .....
}
}
}
这可能不是最佳解决方案,但它是解决方案之一。