1

時々このエラーが発生し、それを修正する方法がわからないため、クエリでexecuteQueryを使用することはめったにありません。これが私のコードです。

use(TimeCategory) {
        def referenceDate = new Date() - 101.year
        println '============================= '+referenceDate
            def cancelledSlots = RegistrantTestingCenterExamSchedule.executeQuery("""select rt.registrant.emailAddress from RegistrantTestingCenterExamSchedule as rt 
                where rt.registrant.firstName in(select i.firstName from Individual i) and rt.registrant.lastName in(select i.lastName from Individual i) and 
                rt.registrant.middleName in(select i.middleName from Individual i) and rt.registrant.birthDate in(select i.birthDate from Individual i) or 
                rt.registrant.seniorCitizen = false or rt.registrant.birthDate >=:refDate""",[refDate: referenceDate])            
}

そして、次のエラーメッセージが表示されました: 名前付きパラメーター [refDate]が見つかりませんでし た。宣言されたパラメーターと比較する必要がない条件を削除しようとしました ( and rt.registrant.birthDate>=:refdate",[refDate:refereneceDate] )そしてそれはうまくいきました.なぜ私はまだこのエラーが発生しているのか本当にわかりません.パラメータを正しく宣言したようです.渡された値パラメータは有効です.なぜならターミナルに出力されているのを見ることができるからです.よろしくお願いします.

4

1 に答える 1

0

マニュアルによると、三重引用符で囲まれた複数行の文字列は HQL では機能しません(複数行のクエリのセクションを参照してください)。行継続文字を使用してみてください。

executeQuery("select rt.registrant.emailAddress \
from RegistrantTestingCenterExamSchedule as rt \
.... \
or rt.registrant.birthDate >= :refDate", [refDate : referenceDate])
于 2012-08-04T07:01:06.070 に答える