我有一个域类,需要在updateBofore方法上更新同一域的其他实例的某些值。但是它将无限运行。有什么办法只能更新一次?

Class ABC {

    String name
    String ref

    def beforeUpdate() {
        List abcs = findAllWhere(ref: ref)
        abcs.each {
            it.name = name
            it.save(flush: true)
        }

    }
}

最佳答案

使用插入前gorm事件,而不迭代所有列表并调用save。

class ABC {
    //your defs here

    def beforeInsert()
        List abcs = findAllWhere(ref: ref)
        if(abcs){
          this.name = abcs.first().name
        }
    }
}

您必须在域类之外调用save
ABC a = new ABC()
a.save()

而beforeInsert可以解决问题

关于grails - 在beforeUpdate方法中无限调用该方法来更新域实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34327543/

10-13 05:23