Grails:如何查询多对多映射中的对象?
您好,我有以下域类。
class Student {
int age
static hasMany = [courses:Course]
}
class Course {
String name
static hasMany = [students:Student]
}
我想找到参加课程(ID 1)、年龄为 7 岁的学生。
我可以使用动态查找器、标准构建器或 HQL 来实现这一点吗?
我不想执行以下操作,因为它使所有学生加载效率低下:
def course = Course.get(1);
course.students.findAll{ it.age == 7 }
Hello I have the follwing domain classes.
class Student {
int age
static hasMany = [courses:Course]
}
class Course {
String name
static hasMany = [students:Student]
}
I want to find the Students taking Course (with id 1), with age 7.
Could I do that with dynamic finder or criteria builder or HQL?
I do not want to do following as it load all students so inefficient:
def course = Course.get(1);
course.students.findAll{ it.age == 7 }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
它位于 GORM 文档的“条件/查询关联”部分。
It's in GORM doc, section "Criteria/Querying Associations".
您可以使用动态查找器:
通过使用
load()
而不是get()
,您可以避免检索整个 Course 实例,而只需引用其 id。另一种选择是 HQL:
You can use a dynamic finder:
By using
load()
instead ofget()
you avoid retrieving the whole Course instance and just reference its id.Another option is HQL: