2013-06-28 74 views
0

我試圖執行查詢來收集特定數據,但在查詢的on部分查詢中遇到問題。要開始了,這是我的課:HQL加入Grails

class TimeSlot { 

    String timeslot_id 
    String time_chunk_id 
    String uid 
    String exam_id 
    String start_time 
    String is_special_arrangement 

    static mapping = { 
     table 'timeslot' 
     id name: "timeslot_id", column: "timeslot_id" 
     version false 
     } 
    } 

這是我試圖讓工作查詢:

TimeSlot.executeQuery("Select t.time_chunk_id, t.uid, t.start_time, t.timeslot_id, t.is_special_arrangement, e.length from TimeSlot t inner join Exams e on t.exam_id = e.exam_id where t.exam_id = ? and t.time_chunk_id = ?", [testArray[i], timeChunkArray[x]]) 

它是在on部分拋出一個錯誤,因爲它期待一個條款,但我需要數據具體涉及兩個表的exam.id比較。有沒有另外一種方法來解決這個問題,或者另一種方法來設置查詢,這樣它就可以像在任何SQL編輯器中一樣工作?

+0

使用'with',而不是在查詢'on'會更容易些。 HQL不支持'on'關鍵字。它的等價物是'與'。 – dmahapatro

+0

這會帶走錯誤,但現在它說無法在't.exam_id = e.exam_id'解析符號't'。任何建議,爲什麼發生這種情況? – thehoule64

+1

使用'從TimeSlot作爲T,考試作爲e其中t.exam_id = e.exam_id'。 – dmahapatro

回答

0

如果改變域類,並添加一對多的關係

class TimeSlot { 
    static hasMany = [examinations:Exams] 

然後HQL可以

select ... from TimeSlot t join t.examinations e