2

我在 mygrails 项目中有 2 个名为 Profile 和 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 保留在数据库中

我有 2 个问题是否可以为我收到的错误消息获得更好的调试输出我是否遗漏了任何内容以确保从数据库中删除 licekeys?

谢谢

4

1 回答 1

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; }
}
于 2012-11-15T13:31:50.740 回答