grailsgrails-ormgrails-domain-class

Grails: How to query objects in many to many mapping?


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 }

Solution

  • def studs = Student.withCriteria {
      eq('age', 7)
      courses {
        eq('id', 1)
      }
    }
    

    It's in GORM doc, section "Criteria/Querying Associations".