Grails 3:找到以多对多关系添加到另一个域的域(没有为参数1

时间:2016-05-26 17:52:14

标签: grails

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

我有2个领域:课程和学生,他们有多对多的关系(课程可以有几个学生,学生可以报名参加几门课程),学生属于课程。

因此,当我将一名学生添加到课程中时,我希望能够找到课程添加了特定学生的内容。

我试图使用:

def s = Student.get(id)

def c = Course.findAllByStudents(s)

但Grails一直告诉我"没有为参数1"。

指定值

你们可以对此嗤之以鼻吗?

1 个答案:

答案 0 :(得分:1)

Course.findAllByStudents期望作为学生的参数Set,但您正在为其提供单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
}