2011-08-22 64 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+"%") 
}