[英]Grails Hql query for one to many association
我有一個培訓領域課程
class Training {
String type
Date createdOn
Date modifiedOn
static belongsTo = [course: Course]
static hasMany = [attachments: Attachment]
}
我有課程領域課程
class Course {
String name
static hasMany = [trainings: Training, tracks: Track]
static belongsTo = Track
}
和跟蹤域類
class Track {
String name
}
現在我有一個過濾器(這是gsp頁面,它會將id作為參數發送給控件),該過濾器根據課程和軌跡選擇訓練
現在說params.courseId = 1和3
所以我寫查詢
def query = "FROM Training AS t WHERE t.course.id IN (1,3)"
trainingList = Training.findAll(query)
這是正確的ii獲得所需的輸出。
現在當我說我有軌道ID時,params.trackId = 1,2
def query = "FROM Training AS t WHERE t.course.tracks.id IN (1,2)"
trainingList = Training.findAll(query)
這是行不通的..如何寫正確的查詢,我有上述關聯。
區別在於您要查詢一對多關聯,即“許多”方面。
假設的HQL:
def query = "FROM Training AS t WHERE exists " +
"(from t.course.tracks AS tr where tr.id IN (1,2))"
或條件:
def trainings = Training.withCriteria {
course {
tracks {
in('id', [1, 2])
}
}
}
我還沒有進行更深入的研究,但是此查詢的結果與您首先編寫的查詢相同
def trainingList = Training.findAll ("from Training as trnin "+
"join trnin.course.id as trinincr"+
"join trinincr.tracks.id"+
" where trnin.course.id in (1,3)")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.