在Grails中执行executeQuery时如何访问关系表?
执行HQL语句时是否可以访问关系表 例如,我有3个表:帐户、承诺、帐户和承诺。它是使用以下域生成的:在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.
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已经知道表之间的关系了。是的,似乎是这样。我只是改变了体系结构,能够得到更好的查询。谢谢你的回复。