2011-08-22 61 views
1

我有一个Grails标准,有关联的子类可以为空。我需要得到所有的结果,即使是那些有空子项的结果,但是这些标准都是通过INNER JOIN来执行的。我如何通过LEFT JOIN执行它?如何使Grails条件作为左连接执行?

Grails的版本是1.3.7(最新的),查询正在通过个createCriteria()。列表

+0

什么版本的Grails?另外,你如何执行查询?使用动态查找器?个createCriteria?的executeQuery? –

+0

Grails版本为1.3.7(最新版本),查询正在通过createCriteria()执行。列表 – ArmlessJohn

+0

我已合并您的帐户,现在您已将您的问题重新统一。 – Kev

回答

1

尝试使用HQL语句执行。左联接看到:http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html

HQL语句可以如下进行:DomainClass.executeQuery(“从选择......”)

+1

由于其他业务需求,我确实需要使用此标准。我试图使用'createAlias(“childClass”,“child”,CriteriaSpecification.LEFT_JOIN)''但我想我遇到了[这个Grails错误](http://jira.grails.org/browse/GRAILS-7324)。仍然把我的头发拉过来。 – ArmlessJohn

+0

我会建议用hql来做,因为你对连接机制有更多的控制 – hitty5

1

由于问题是旧的,大量的改进已经在这个已经完成。以下内容将帮助像我这样的人搜索。以下内容即使对于集合中的条件查询中的复杂和{}和{}块也适用。在例如。专业是一个集合。

List users = User.createCriteria().list(){ 
        createAlias('specialities', 'sp', CriteriaSpecification.LEFT_JOIN) 

    ilike("sp.name","%"+trimPhrase+"%") 
}