在Grails中执行executeQuery时如何访问关系表?

在Grails中执行executeQuery时如何访问关系表?,grails,hql,gorm,Grails,Hql,Gorm,执行HQL语句时是否可以访问关系表 例如,我有3个表:帐户、承诺、帐户和承诺。它是使用以下域生成的: class Account { static hasMany = [ commits : Commitment ] String name } class Commitment { static hasMany = [ actors : Account ] String description } 我的最终和实际SQL查询如下所示: SELECT b.

执行HQL语句时是否可以访问关系表

例如,我有3个表:帐户、承诺、帐户和承诺。它是使用以下域生成的:

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中是否可以这样做


谢谢。

否,HQL仅适用于映射类。如果要运行SQL查询,只需使用groovy.SQL.SQL即可。但是,如果您只想访问中间表来连接其他两个表,那就没有必要了,因为HQL已经知道表之间的关系了。

是的,似乎是这样。我只是改变了体系结构,能够得到更好的查询。谢谢你的回复。