2010-04-23 50 views
1

是否有可能做的HQL語句時訪問的關係表?如何在Grails中執行executeQuery時訪問關係表?

作爲一個例子,我有3個表:帳戶,承諾,account_commitment。而且,利用這些領域中產生:

class Account { 
    static hasMany = [ commits : Commitment ] 

    String name 
} 

class Commitment { 
    static hasMany = [ actors : Account ] 

    String description 
} 

我最終和實際的SQL查詢是這樣的:

SELECT 
    b.id, 
    account_name, 
    d.nid, 
    d.title 
FROM 
    account_commitment a, // is this available in HQL? 
    account b, 
    commitment c, 
    content_type_act d 
where 
    d.nid = 3332 
    and a.account_id = b.id 
    and a.act_id = c.id 
    and c.act_id = d.nid 

我相信HQL只允許有效的類域。由於關係表是自動生成的,這在HQL中可能嗎?

謝謝。

回答

2

沒有,HQL僅適用於映射類。如果你想運行SQL查詢,只需使用groovy.sql.Sql。但是,如果你只是想訪問中間表加入其他兩個,這是不必要的,因爲HQL知道已經表之間的關係。

+0

是,它似乎很。我只是改變了架構,並能夠有更好的查詢。謝謝回覆。 – firnnauriel 2010-04-23 17:23:08