簡體   English   中英

Grails:如何在多對多映射中查詢對象?

[英]Grails: How to query objects in many to many mapping?

您好,我有以下域類。

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 }
def studs = Student.withCriteria {
  eq('age', 7)
  courses {
    eq('id', 1)
  }
}

它在GORM doc的“Criteria/Querying Associations”部分。

您可以使用動態查找器:

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])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM