Hibernate 如何在grails中使用条件左连接2个表
使用Grails2.1.1,我需要使用左连接构建一个包含两个表的查询。如果我在oracle中查询它,它会工作并给出正确的结果。当我使用grails控制器时,我得到一个错误。有人能帮我吗 以下是我的尝试: 在oracle上工作的我的查询:Hibernate 如何在grails中使用条件左连接2个表,hibernate,grails,gorm,grails-2.0,hibernate-criteria,Hibernate,Grails,Gorm,Grails 2.0,Hibernate Criteria,使用Grails2.1.1,我需要使用左连接构建一个包含两个表的查询。如果我在oracle中查询它,它会工作并给出正确的结果。当我使用grails控制器时,我得到一个错误。有人能帮我吗 以下是我的尝试: 在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
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
我在grails控制器中使用的hql查询:
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 = {
...
}
}
class InvIssue{
static mapping = {
table 'INV_ISSUE'
slsDoMst column: 'SLS_DO_MST_MID',ignoreNotFound: true
...
}
...
SlsDoMst slsDoMst
static constraints = {
...
}
}
我的InvIssue域>>>
class SlsDoMst {
...
static mapping = {
...
}
static constraints = {
...
}
}
class InvIssue{
static mapping = {
table 'INV_ISSUE'
slsDoMst column: 'SLS_DO_MST_MID',ignoreNotFound: true
...
}
...
SlsDoMst slsDoMst
static constraints = {
...
}
}
在HQL中,不能对左联接使用
on
。Hibernate通过模型定义决定join子句使用哪一列
您需要在HQL上join使用的模型上定义一个关系(例如,hasMany
)和mapping
以下是参考资料:
任何源代码示例都将great@SumonBappi我需要您编写的模型定义,因为有一些不同的方法。下面是一个作为条件查询的左外部联接的示例:以下是HQL、条件和where查询中所有联接类型的示例:@sndyuk我已添加我的域。你能帮忙吗