在Grails GORM查询中使用join

时间:2011-07-15 13:08:23

标签: grails gorm

在Grails中,我们以这样的方式定义域类,以便清楚地指示域类之间的关系,例如一对多或属于(如果有的话)。由于Grails基于DRY,这是否意味着我们在Grails DomainClass.ExecuteQuery方法中执行复杂的HQL查询时不需要使用join关键字?

2 个答案:

答案 0 :(得分:3)

Grails不会改变您编写HQL的方式无论您使用的是Grails域类还是POJO,它都是一样的。如果您需要编写导航对象图的查询,那么您需要使用与HQL类似FROM parent p JOIN p.child c WHERE c.age = 10的语法。 Criteria查询以相同的方式工作,但您只需使用闭包。

有关详细信息,请查看documentation (第5.4.3节)

答案 1 :(得分:1)

一般情况下,您不需要显式连接,因为Hibernate根据域类的关系知道表的关系。一个例外是集合,可以使用连接来自定义默认行为。 HQL的最佳资源是Hibernate文档本身:http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html