Grails GORM:列出所有嵌套属性

时间:2013-01-14 17:51:37

标签: grails groovy gorm

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

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
}

2 个答案:

答案 0 :(得分:7)

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

def studends = Student.where {
  professions {
      profession.name == "Programmer" || profession.name == "Manager"
  }
}

答案 1 :(得分:3)

很多方法可以给这只猫上皮 - 这是一个:

StudentProfession.findAllByProfessionInList(Profession.findAllByNameInList(["Programmer","Manager"])*.student.unique()