我有那些 Realm 类:
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]
}
我想做的是找到与学生和类(class)相关的所有事件。我做了这个查询:
(...)
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:
我在这里想念什么?
最佳答案
查询Students
中第二个参数的问题是它是1:M(一对多)关联,并且不支持使用动态查找器查询这些关联。
看一下GORM / Grails支持的各种查询的this quick overview,以更好地了解您可以使用哪些选项以及何时使用它们。
如您所见,在这种情况下,确实需要使用criteria:
def events = Event.createCriteria().list() {
eq('course', course)
students {
eqId(person.id)
}
}
}
上面仅与一个人匹配,但是您可以对其进行进一步修改以根据需要使用一个人的列表。我将把练习留给您,以便您熟悉如何创建和使用标准。
关于sql - 使用GORM的动态FindAllBy方法时出现SQL错误-未设置#2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26622030/