2016-01-06 39 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/ –

相关问题