我在mygrails项目中有两个名为Profile and License的课程 以下是课程中重要内容的概述
class Profile {
Set<Licence> licenceKeys
static hasMany = [licenceKeys:Licence]
static constraints = {
licenceKeys nullable:true
}
static mapping = {
licenceKeys cascade: 'all-delete-orphan'
}
}
class Licence {
Profile profile
String licenceKey
static belongsTo = [profile:Profile]
static constraints = {
profile nullable:false
licenceKey blank:true, nullable:true, unique:true
}
}
当我在我的一个控制器中运行以下代码时
if (!profile.licenceKeys.clear()) {
log.error ("Error occured removing licence keys from the database");
userProfile.errors.each { err -> println err; }
} else {
log.info("Successfully remove licence keys from the database");
}
我在控制台中收到以下错误消息,licencekeys保留在数据库中 org.springframework.validation.BeanPropertyBindingResult:0错误 密钥将从Profile类中设置的licenceKeys中删除,但仍保留在数据库
中我有2个问题 是否有可能为我得到的错误消息获得更好的调试输出 我是否遗漏了任何内容以确保从数据库中删除了licekeys?
由于
答案 0 :(得分:0)
clear()
方法实际上不会执行删除clear()
之后要保存的数据库的工作。尝试...
profile.licenceKeys.clear();
if (!profile.save(flash:true)) {
log.error ("Error occured removing licence keys from the database");
userProfile.errors.each { err -> println err; }
} else {
log.info("Successfully remove licence keys from the database");
}
对于你的第二个问题,你会想要从保存失败的域对象中获取错误......
if (!profile.save(flash:true)) {
log.error ("Error occured removing licence keys from the database");
profile.errors.each { err -> println err; }
}