Grails3:在多对多关系中查找添加到另一个域的域(没有为参数1指定值)

Grails3:在多对多关系中查找添加到另一个域的域(没有为参数1指定值),grails,Grails,我是Grails的新手,我发现了以下障碍: 我有两个领域:课程和学生,它们有多对多的关系(一门课程可以有几个学生,一个学生可以注册几个课程),学生属于该课程 因此,当我将一个学生添加到课程中时,我希望能够找到哪些课程添加了一个特定的学生 我尝试使用: def s=学生获取(id) def c=课程findAllByStudents(s) 但grails一直告诉我“没有为参数1指定值” 你们能解释一下吗?课程。findAllByStudents期望作为学生的参数集,但你们提供了学生的单个实例,这就

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

我有两个领域:课程和学生,它们有多对多的关系(一门课程可以有几个学生,一个学生可以注册几个课程),学生属于该课程

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

我尝试使用:

def s=学生获取(id)

def c=课程findAllByStudents(s)

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


你们能解释一下吗?

课程。findAllByStudents
期望作为学生的参数
,但你们提供了学生的单个
实例,这就是为什么你们得到
“没有为参数1指定值”

查找学生在哪些课程中学习。如果您创建了如下域类:

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

class Student {
     //some Student attributes
     static hasMany = [courses: Course]
     static belongsTo = Course
} 
Course.withCriteria {
    createAlias 'students', 's'
    eq 's.elements', s
}    
然后您可以简单地使用
s.courses

如果您不是双向映射该关系。您可以创建如下条件:

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

class Student {
     //some Student attributes
     static hasMany = [courses: Course]
     static belongsTo = Course
} 
Course.withCriteria {
    createAlias 'students', 's'
    eq 's.elements', s
}    

这是不够的信息。请提供完整的堆栈跟踪和域类代码。我现在觉得自己像个白痴。非常感谢。