10

こんにちは、次のドメインクラスがあります。

class Student {
   int age
   static hasMany = [courses:Course]
}

class Course {
   String name
   static hasMany = [students:Student]
}

7歳のコース(ID 1)を受講している学生を見つけたいです。

ダイナミックファインダーまたは基準ビルダーまたはHQLでそれを行うことはできますか?

すべての生徒の負荷が非常に非効率的であるため、フォローは行いたくありません。

def course = Course.get(1);
course.students.findAll{ it.age == 7 }
4

2 に答える 2

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

これはGORM docのセクション「Criteria/Querying Associations」にあります。

于 2011-06-11T15:45:33.170 に答える
-2

動的ファインダーを使用できます。

def students = Student.findByCourseAndAge(Course.load(1), 7)

load()代わりに使用することでget()、 Course インスタンス全体を取得することを避け、その ID を参照するだけです。

別のオプションは HQL です。

def students = Student.executeQuery(
   'from Student s where s.course.id = :courseId and s.age = :age',
   [courseId: 1, age: 7])
于 2011-06-11T16:09:29.697 に答える