簡體   English   中英

Grails Hql查詢一對多關聯

[英]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.

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