2016-01-06 67 views
0

使用grails 2.1.1,我需要使用左連接構建一個包含2個表格的查詢。如果我在oracle中查詢它,它正在工作並給我正確的結果。當我使用grails控制器時,出現錯誤。任何人都可以幫助我嗎?如何在grails中使用2個表格留下連接

這裏是我下面的嘗試:

我查詢其在Oracle工作:

SELECT MS.* FROM 
    SLS_DO_MST MS LEFT OUTER JOIN INV_ISSUE ISS 
    ON MS.MID = ISS.SLS_DO_MST_MID 
    where ISS.SLS_DO_MST_MID is null 

我的HQL查詢我使用的Grails的控制器,其中:

def items = SlsDoMst.executeQuery('select a from sls.dlo.SlsDoMst a left outer join inv.InvIssue b on a.id = b.slsDoMst.id where b.slsDoMst.id is null') 

錯誤我得到:

unexpected token: on near line 1, column 66 [select a from sls.dlo.SlsDoMst a left outer join inv.InvIssue b on a.id = b.slsDoMst.id where b.slsDoMst.id is null] 

我的域名如下::

我SlsDoMst域>>>

class SlsDoMst { 

    ... 

    static mapping = { 
     ... 
    } 

    static constraints = { 
     ... 
    } 
} 

我InvIssue域>>>

class InvIssue{ 
    static mapping = { 
     table 'INV_ISSUE' 
     slsDoMst column: 'SLS_DO_MST_MID',ignoreNotFound: true 
     ... 
    } 

    ... 
    SlsDoMst slsDoMst 

    static constraints = { 
    ... 
    } 
} 

回答

1

不能爲左使用on捧場HQL。 Hibernate通過模型定義決定哪個列用於連接子句。

您需要定義一個關係(例如,hasMany)和mapping關於HQL上連接使用的模型。

下面是引用: https://grails.github.io/grails-doc/2.4.3/ref/Database%20Mapping/joinTable.html

+0

任何源代碼示例我的目的將是巨大的 –

+0

@SumonBappi我需要你寫的,因爲有一些不同的方法模型定義。 – sndyuk

+0

下面是一個左外連接作爲條件查詢的示例:http://stackoverflow.com/questions/32751113/grails-gorm-criteria-on-null-association/32751847#32751847下面是所有連接類型的示例在HQL中,標準,以及在哪裏查詢:http://emmanuelrosa.com/articles/gorm-for-sqladdicts-from-clause/ –

相關問題