这只花了我差不多半天的时间(主要是因为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
答案 0 :(得分:0)
如果基类不在grails-app/domain
中,则不会调用事件处理程序。例如,如果项目的结构如下,则将忽略事件处理程序:
src
groovy
mypackage
Base.groovy
grails-app
domain
mypackage
Extended.groovy