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

时间:2010-04-23 15:44:47

标签: grails hql gorm

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

例如,我有3个表:account,commitment,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中是否可行?

感谢。

1 个答案:

答案 0 :(得分:2)

不,HQL仅适用于映射类。如果要运行SQL查询,只需使用groovy.sql.Sql。但是如果您只想访问中间表以加入其他两个,那么这是不必要的,因为HQL已经了解了表之间的关系。