为了账号安全,请及时绑定邮箱和手机立即绑定

Grails:无法访问 hasmany Relation 的集合(没有此类属性)

Grails:无法访问 hasmany Relation 的集合(没有此类属性)

暮色呼如 2022-09-07 20:56:29
我目前正在为我构建的域类进行单元测试。但是由于某种原因,我无法访问“hasMany”实现中的元素。当我尝试访问属性'module.exams'时,它会抛出一个异常groovy.lang.MissingPropertyException:No这样的属性:class:exams for class:ch.fhnw.webec.Module。我见过无数人们访问该物业的例子。我尝试过考试,getExams,addTo等,但没有一个有效。void 'test module relation'() {    Teacher teacher = new Teacher(prename: "Max", surname: "Mustermann")    Module module = new Module(name: "Workshop 1", shortName: "WS2", credits: 3, year: 2019, isSpring: true, teacher: teacher)    Exam exam1 = new Exam(module: module, name: "Prüefung 01", isMsp: false, number: 1, weight: 1, date: Date.parse("yyyy-MM-dd", "2019-03-28"))    Exam exam2 = new Exam(module: module, name: "Prüefung 01", isMsp: false, number: 1, weight: 1, date: Date.parse("yyyy-MM-dd", "2019-03-28"))    expect:    module.exams.count() == 2 // <--  this line}package ch.fhnw.webecclass Module {// ....    static hasMany = [exams: Exam]// ...}爪哇岛intellij-idea圣杯
查看完整描述

1 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

通过尝试一个错误和互联网上的大量问题,我找到了一个解决方案。我没有删除问题,而是认为我会解释解决方案。也许这可以帮助其他试图弄清楚这一点的人:


感谢JeffScottBrown指出这一点:默认情况下,它会创建一个集合。这意味着addToXXX确实有效。但在我的情况下,我需要一个列表,这就是我必须添加的内容:


 class Module {

    static hasMany = [exams: Exam]

    List exams

    // ...

}

但添加这些是不够的。创建对象时,您必须通过生成的“addToXY”方法将它们添加到此列表中:


    module.addToExams(exam1)

    module.addToExams(exam2)


    assert module.exams.size() == 2


查看完整回答
反对 回复 2022-09-07
  • 1 回答
  • 0 关注
  • 75 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信