[英]Grails: How to query objects in many to many mapping?
您好,我有以下域類。
class Student {
int age
static hasMany = [courses:Course]
}
class Course {
String name
static hasMany = [students:Student]
}
我想找到 7 歲的學生參加課程(ID 為 1)。
我可以使用動態查找器或標准生成器或 HQL 來做到這一點嗎?
我不想做以下事情,因為它加載所有學生效率低下:
def course = Course.get(1);
course.students.findAll{ it.age == 7 }
def studs = Student.withCriteria {
eq('age', 7)
courses {
eq('id', 1)
}
}
它在GORM doc的“Criteria/Querying Associations”部分。
您可以使用動態查找器:
def students = Student.findByCourseAndAge(Course.load(1), 7)
通過使用load()
而不是get()
您可以避免檢索整個 Course 實例並僅引用其 ID。
另一種選擇是 HQL:
def students = Student.executeQuery(
'from Student s where s.course.id = :courseId and s.age = :age',
[courseId: 1, age: 7])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.