2

我的(简化的)域模型如下所示:

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
}
4

2 回答 2

7

您可以使用 GORM 查询来执行此操作:

def studends = Student.where {
  professions {
      profession.name == "Programmer" || profession.name == "Manager"
  }
}
于 2013-01-14T18:43:21.327 回答
3

给这只猫剥皮的方法有很多——这里有一个:

StudentProfession.findAllByProfessionInList(Profession.findAllByNameInList(["Programmer","Manager"])*.student.unique()
于 2013-01-14T19:08:38.633 回答