0

次のドメイン クラスがあるとします。

class Test {
    String name
    Integer val1, val2
}

現在、次の基準でこのクラスを検索しています。

Test.createCriteria().list(params) {
    params.key.split(' ').each {
        ilike('name', "%${it}%")
    }
    gtProperty('val1', 'val2')
}

Grails Searchable Pluginを使用して検索結果を改善しようとしています。より具体的には、そのQuery Builder。唯一の問題は、結果をフィルタリングする方法が見つからないことval1 > val2です。以下に示すように:

Test.search(params) {
    must(queryString(params.key))
    must(
        // Something to require that val1 > val2
    )
}

検索後にフィルタリングすることはできましたが、ページネーションが台無しになります。

何か案は?

4

1 に答える 1

0

これの何が問題なのですか?

def result = Test.where {
    it.name = name
    it.val1 > val2
}

編集:ドキュメントでは、これを例として示しています

search {                    // <-- create an implicit boolean query
    lt("pages", 50)         // <-- uses CompassQueryBuilder#lt, and adds a boolean "should" clause
    term("type", "poetry")  // <-- uses CompassQueryBuilder#term, and adds a boolean "should" clause
}

それで、このようなものはあなたのために働きますか?構文がわからないため、これまで使用したことがありません。

search {                      
    term("name", foo) 
    gt("val1", val2)
}
于 2016-07-15T18:41:30.803 に答える