1

こんにちは、私はこの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

誰でもこの問題を解決するのを手伝ってくれませんか

ご挨拶

4

0 に答える 0