Validation Grails:创建新对象时验证域对象失败
当我创建一个新的域对象并在验证后调用save命令时,它失败并返回一个错误,即对象的id为null!但是我的域的id将由数据库序列自动生成,所以我没有将id值传递给它。我怎么才能解决它?! 这是我的密码:Validation Grails:创建新对象时验证域对象失败,validation,grails,gorm,Validation,Grails,Gorm,当我创建一个新的域对象并在验证后调用save命令时,它失败并返回一个错误,即对象的id为null!但是我的域的id将由数据库序列自动生成,所以我没有将id值传递给它。我怎么才能解决它?! 这是我的密码: if (person.validate()) { // It is always false here person.save() } else { // something here } 非常感谢你 我猜您在Person Model类中添加了一个名为id的字段。通常Grail
if (person.validate()) { // It is always false here
person.save()
} else {
// something here
}
非常感谢你 我猜您在Person Model类中添加了一个名为id的字段。通常Grails会为您执行此操作,因此您不必添加它。实际上,您不需要在
save()
之前调用validate()
,因为save()
在保存对象之前隐式调用validate
。您可以这样做:
if (person.save(flush:true)) {
// Report success
} else {
// Report error
person.errors.each {
println it
}
}
关于问题的原因,我认为在不知道域对象的情况下是不可能说出来的。没有代码,很难说出来,但我假设您没有约束,所以您不会期望出现任何问题。但是所有字段都有一个隐式的NOTNULL约束,除非您用
null:true
覆盖它,所以这可能是失败的地方
id为null的原因是,它仅在成功调用
save()
后分配。发布person的实现和实例化将有助于回答此问题。