我的域类中有一个临时方法,它将更新类的属性.当我使用此方法时,类不会标记为脏并且不会保存.
class Major {
String code
String major
static transients = ['update']
def update(String newVal) {
major = newVal
}
}
Major major = Major.findByCode("ACAA");
major.update("NEW VALUE");
println("Is dirty? "+ major.dirty); //Is dirty? false
Run Code Online (Sandbox Code Playgroud)
当我在方法之外更新属性时,它按预期工作,我可以保存
Major major = Major.findByCode("ACAA");
major.major = "NEW VALUE";
println("Is dirty? "+ major.dirty); //Is dirty? true
Run Code Online (Sandbox Code Playgroud)
有什么理由不起作用吗?
Grails 3.3.1
GORM 6.1.6
错误在于更新功能.它需要显式调用这样的setter:
def update(String newVal) {
setMajor(newVal)
}
Run Code Online (Sandbox Code Playgroud)
有关新的脏检查实现的参考,请参阅GORM升级说明.