こんにちは、私はこのGrailsコードを持っています:
free_search = ReportFree.createCriteria().list {
or {
report{
ilike("description", "%${params.search}%")
ilike("type", "%${params.search}%")
debitor {
and {
'in'('id', session.position?: 'VMD000000')
ilike("NAME", "%${params.search}%")
}
}
}
}
eq('open', true)
eq('copy', true)
}
これから次のSQLが得られると思いました:
select rf.* from report_free
inner join report r on rf.report_reportid = r.reportid and rf.report_type=b.type
inner join debitor deb on deb.CODE_ID=b.debitor
where (
b.description like '%something to search%'
or b.type like '%something to search%'
or (
deb.NAME like '%something to search%' and deb.CODE_ID in (List of Deb)
)
)
and rf.open=1 and rf.copy=1`
しかし、それはうまくいきません。空のリストを取得します。
SQL - Loggin を true に設定しました。Grails は次のステートメントを出力します。
「これ」と「?」を入れ替えました。
from
report_free
left outer join
report
on report_free.report_reportid=report.reportid
and report_free.report_type=report.type
left outer join
debitor
on debitor.CODE_ID=report.debitor
where
(
(
lower(report_free.description) like '%SOMETHING TO SEARCH%'
and lower(report.type) like '%SOMETHING TO SEARCH%'
and (
(
debitor.CODE_ID in (
'LIST OF ELEMENTS'
)
and lower(debitor.NAME) like '%SOMETHING TO SEARCH%'
)
)
)
)
and report_free.open=1
and report_free.copy=1
誰でもこの問題を解決するのを手伝ってくれませんか
ご挨拶