【问题标题】:Grails 3: find domains that were added to another one in many-to-many relationship (No value specified for parameter 1Grails 3:查找以多对多关系添加到另一个域的域(未为参数 1 指定值
【发布时间】:2016-05-26 17:52:13
【问题描述】:

我是 Grails 新手,发现了以下障碍:

我有 2 个域:Course 和 Student,它们是多对多的关系(一个 Course 可以有多个学生,一个学生可以注册多个课程)并且该学生属于该课程。

因此,当我将学生添加到课程时,我希望能够找到哪些课程添加了特定学生。

我尝试使用:

def s = Student.get(id)

def c = Course.findAllByStudents(s)

但是 grails 一直告诉我“没有为参数 1 指定值”。

你们能解释一下吗?

【问题讨论】:

  • 信息不足。提供您的域类的完整堆栈跟踪和代码

标签: grails


【解决方案1】:

Course.findAllByStudents 期望作为 Student 的参数 Set,但您为它提供了 Student 的单个 instance,这就是您得到 "No value specified for parameter 1" 的原因。

查找哪些课程是学生。如果您创建了这样的域类:

class Course {
    //some Course attributes
    static hasMany = [students: Student] 
}

class Student {
     //some Student attributes
     static hasMany = [courses: Course]
     static belongsTo = Course
} 

那么您可以简单地使用s.courses

如果你不是双向映射那个关系。您可以像这样创建标准:

Course.withCriteria {
    createAlias 'students', 's'
    eq 's.elements', s
}    

【讨论】:

  • 我现在感觉自己像个白痴。非常感谢。
猜你喜欢
  • 2013-12-30
  • 2016-06-26
  • 1970-01-01
  • 2015-12-28
  • 1970-01-01
  • 2012-03-26
  • 2017-01-02
  • 1970-01-01
  • 2021-01-19
相关资源
最近更新 更多