Grails-一对一关联异常
我在验证域类时遇到问题。我有两个通过一对一关系关联的域:Grails-一对一关联异常,grails,gorm,Grails,Gorm,我在验证域类时遇到问题。我有两个通过一对一关系关联的域: class AssemblyForm { Measures measures static hasOne = [measures: Measures] } class Measures { AssemblyForm assemblyForm } 现在我正在控制器和服务中绑定和创建它们: // controller class AssemblyFormController { def save() {
class AssemblyForm {
Measures measures
static hasOne = [measures: Measures]
}
class Measures {
AssemblyForm assemblyForm
}
现在我正在控制器和服务中绑定和创建它们:
// controller
class AssemblyFormController {
def save() {
AssemblyForm assemblyFormInstance = new AssemblyForm()
assemblyFormInstance.measures = measures
assemblyFormService.save(assemblyFormInstance)
}
}
// service
class AssemblyFormService {
public AssemblyForm save(AssemblyForm assemblyForm) {
try {
assemblyForm.save()
} catch (Throwable t) {
}
return assemblyForm
}
}
现在我希望assemblyForm实体在其关联发生错误时不会保存在数据库中。但事实是,当度量实体有一些错误时,AssemblyForm将持久化到数据库,而度量实体则不会。我是否做错了什么,或者这是标准行为,我应该在保存之前检查关联实体?多谢各位
问候,,
Lojza
assemblyForm.save()
在验证失败时不会引发异常。检查save()
返回值或传递throwOnError:true
。谢谢,你说得对。在阅读save方法时,我注意到有一个deepValidate参数,grails在保存时验证关联。但是它没有说明如果关联实体的验证失败,是否应该将主实体保存到数据库中……或者应该保存所有对象,或者不保存任何对象。对于您的代码,级联应该适用,因此如果save()
对于度量值
失败,那么对于assemblyForm
也应该失败。我不知道这为什么不能像预期的那样起作用。