2012-09-13 33 views
1

--illegal嘗試取消引用集合錯誤我有一個培訓領域類的Grails在HQL

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 
    } 

我想選擇基於曲目的訓練。

現在說我得到軌道ID的,我想基於軌道ID檢索培訓

我想查詢像這樣

def query = "FROM Training AS t WHERE t.course.tracks.id IN (1,2)" 
    trainingList = Training.findAll(query) 

它給

illegal attempt to dereference collection 

錯誤..因爲我做不到t.course.tracks.id

幫我寫相關CT的HQL查詢來獲取的訓練,如果我有軌道ID的(比如1,2)

回答

-1

請找到HQL以下檢索所有的培訓內容可tracid 1 & 2.

從課程C,軌跡TR ,培訓t其中tr.courceid = c.courceid和 tr.trackid = c.tracid和(1,2)

0

tr.trackid你可以做的就是這個

def query = "FROM Training AS t join t.course as c join c.tracks as tr WHERE tr.id IN (1,2)" 
trainingList = Training.findAll(query) 

問題是當你試圖從一個到多個。