使用grails 2.1.1,我需要使用左连接构建一个包含2个表的查询。如果我在oracle中查询它,它正在工作并给我正确的结果。当我使用grails控制器时,我收到错误。有人可以帮我这个吗?
以下是我的尝试:
我的查询适用于oracle:
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')
我在grails控制器中使用的hql查询:
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]
我得到的错误:
class SlsDoMst {
...
static mapping = {
...
}
static constraints = {
...
}
}
我的域名如下:
我的SlsDoMst域>>>
class InvIssue{
static mapping = {
table 'INV_ISSUE'
slsDoMst column: 'SLS_DO_MST_MID',ignoreNotFound: true
...
}
...
SlsDoMst slsDoMst
static constraints = {
...
}
}
我的InvIssue域>>>
def login_request (username, password)
request = {'userName': username, 'password': password}.to_json
url = "#{$url_host}#{$login_api}"
begin
res = RestClient.post(
url,
request,
:content_type => :json, :accept => :json,
:verify_ssl => false)
response_data = JSON.parse(res.body)
$user_token = response_data['token']
$userId = response_data['user']['userId']
p response_data['user']['email']
rescue Exception => e
end
end
答案 0 :(得分:1)
您不能将on
用于HQL中的左连接。 Hibernate通过模型定义决定将哪个列用于join子句。
您需要在HQL上使用的模型上定义关系(例如hasMany
)和mapping
。
以下是参考: https://grails.github.io/grails-doc/2.4.3/ref/Database%20Mapping/joinTable.html