1

基本的に、チェックしたいフィールドが3つあります。

class Book {
   String title
   String ISBN
   String type
}

名前付きクエリを使用して、単一の検索文字列に基づいて、これらの 3 つのフィールドのそれぞれについて大文字と小文字を区別しない検索を実行しようとしています。これが私が現在持っているものです:

    static namedQueries = {

        search { String searchString ->
        ilike("title", searchString) 
        or {
           ilike("ISBN", searchString)
        }
        or { 
           ilike("type", searchString)
        }
    }

例外などは発生しませんが、結果が必要な場合に結果を返さないだけです。何か案は?

編集:

doelleri の例に更新したところ、現在は機能しています。クエリの最後の部分は次のとおりです。

from book this_ where (lower(this_.title) like ? or lower(this_.isbn) like ? or lower(this_.type) like ?)

また、名前付きクエリ内にブレークポイントを作成して、文字列が渡されているかどうかを判断しました。

4

1 に答える 1

3

正しい構文は

static namedQueries = {
    search { String searchString ->
        or {
            ilike("title", searchString)
            ilike("ISBN", searchString)
            ilike("type", searchString)
        }
    }
}
于 2012-09-18T20:10:47.680 に答える