我的(简化)域模型如下所示:
class Student {
static hasMany = [professions:StudentProfession];
}
class StudentProfession {
static belongsTo = [student:Student];
Profession profession;
}
class Profession {
String name;
}
最有效的方式是什么:
列出所有接受过“程序员”和“经理”专业教学的学生
在查询数据库后,我是否被迫过滤掉它们?
students = students.findAll { student ->
student.professions.find { professionNames.contains(it.profession.name) } != null
}
答案 0 :(得分:7)
您可以使用GORM查询执行此操作:
def studends = Student.where {
professions {
profession.name == "Programmer" || profession.name == "Manager"
}
}
答案 1 :(得分:3)
很多方法可以给这只猫上皮 - 这是一个:
StudentProfession.findAllByProfessionInList(Profession.findAllByNameInList(["Programmer","Manager"])*.student.unique()