我有一个Grails标准,有关联的子类可以为空。我需要得到所有的结果,即使是那些有空子项的结果,但是这些标准都是通过INNER JOIN来执行的。我如何通过LEFT JOIN执行它?如何使Grails条件作为左连接执行?
Grails的版本是1.3.7(最新的),查询正在通过个createCriteria()。列表
我有一个Grails标准,有关联的子类可以为空。我需要得到所有的结果,即使是那些有空子项的结果,但是这些标准都是通过INNER JOIN来执行的。我如何通过LEFT JOIN执行它?如何使Grails条件作为左连接执行?
Grails的版本是1.3.7(最新的),查询正在通过个createCriteria()。列表
尝试使用HQL语句执行。左联接看到:http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html
HQL语句可以如下进行:DomainClass.executeQuery(“从选择......”)
由于其他业务需求,我确实需要使用此标准。我试图使用'createAlias(“childClass”,“child”,CriteriaSpecification.LEFT_JOIN)''但我想我遇到了[这个Grails错误](http://jira.grails.org/browse/GRAILS-7324)。仍然把我的头发拉过来。 – ArmlessJohn
我会建议用hql来做,因为你对连接机制有更多的控制 – hitty5
由于问题是旧的,大量的改进已经在这个已经完成。以下内容将帮助像我这样的人搜索。以下内容即使对于集合中的条件查询中的复杂和{}和{}块也适用。在例如。专业是一个集合。
List users = User.createCriteria().list(){
createAlias('specialities', 'sp', CriteriaSpecification.LEFT_JOIN)
ilike("sp.name","%"+trimPhrase+"%")
}
什么版本的Grails?另外,你如何执行查询?使用动态查找器?个createCriteria?的executeQuery? –
Grails版本为1.3.7(最新版本),查询正在通过createCriteria()执行。列表 – ArmlessJohn
我已合并您的帐户,现在您已将您的问题重新统一。 – Kev