在执行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中是否可行?
感谢。
答案 0 :(得分:2)
不,HQL仅适用于映射类。如果要运行SQL查询,只需使用groovy.sql.Sql。但是如果您只想访问中间表以加入其他两个,那么这是不必要的,因为HQL已经了解了表之间的关系。