我是Grails的新手,我发现了以下障碍:
我有2个领域:课程和学生,他们有多对多的关系(课程可以有几个学生,学生可以报名参加几门课程),学生属于课程。
因此,当我将一名学生添加到课程中时,我希望能够找到课程添加了特定学生的内容。
我试图使用:
def s = Student.get(id)
def c = Course.findAllByStudents(s)
但Grails一直告诉我"没有为参数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
}