2014-10-29 55 views
0

我有那些领域类:SQL错误 - #2没有设置

class Person{ 
    String username 
} 

class Course { 
    String code 
    static hasMany = [events:Event] 
} 

class Event { 
    Long id 
    String name 
    (...) 

    static belongsTo = [course:Course, parallel:Parallel] 
    static hasMany = [teachers: Person, students: Person,bought: Exchange, sold: Exchange] 
} 

我想要做的就是找到一个学生相关联的所有事件是什么当然。我做了这个查询:

(...) 
    println "User: ${person.username}" 
    println "Course: ${course.code}" 


    Set<Person> persons = [] 
    persons.add(person) 

    def events = Event.findAllByCourseAndStudents(course, persons) 
} 

但是,这是给我的错误ERROR util.JDBCExceptionReporter - Parameter "#2" is not set; SQL statement:

缺少什么我在这里?

回答

1

与查询Students中的第二个参数相关的问题是,它是1:M(一对多)关联,并且不支持使用动态查找器查询这些关联。

看看GORM/Grails支持的各种类型的查询的this quick overview,以更好地了解您可以使用哪些类型的选项以及何时使用它们。

正如你可以看到使用criteria真的是你在这种情况下需要的东西:

def events = Event.createCriteria().list() { 
    eq('course', course) 
    students { 
     eqId(person.id) 
    } 
    } 
} 

以上只匹配反对一个人,但你可以修改此进一步使用,你的人员名单打算。我会将此练习留给您,以便您可以熟悉如何创建和使用标准。