这只花了我将近半天的时间(主要是因为Grails / Gorm并不十分清楚发生的错误)
我必须将一个从另一个继承的类划分为域
class Base {
String a
static constraints = {
a blank: false, nullable: false, unique: true
}
}
class Extended extends Base {
String b
static constraints = {
b blank: false, nullable: false, unique: true
}
}
现在,我还有一个
beforeValidate
方法,它对a
中定义的Base
属性起作用。def beforeValidate() {
if (a == null) { a = "somevalue" }
}
如果我创建
Extended
的实例并将其保存def instance = new Extended()
instance.save()
如果在
beforeValidate
中定义了class Extended
,那么一切都会正常进行。但是,如果我将
beforeValidate
放入class Base
,它将失败(无提示)。为什么?
PS:使用grails 2.4.0
最佳答案
如果基类不在grails-app/domain
中,则不会调用事件处理程序。例如,如果项目的结构是这样的,则事件处理程序将被忽略:
src
groovy
mypackage
Base.groovy
grails-app
domain
mypackage
Extended.groovy
关于grails - 为什么在基类中未调用beforeValidate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23891238/