2016-11-24 4 views
0

こんにちはGroovyのドメインクラス

は、私が提供するフィルタフィールドのためのGroovyのドメインクラスのフィルタリングを実行する必要があるだけ設けられたフィルタを見つけます。ここ は、コードサンプルです:

User.findAll(name: filter.name, age: filter.age, department: filter.department) 

は、いくつかの構文糖は、例えばfilter.nameは、例えば提供されていないかどうかを検証するために私を助けるためにそこに存在しますnullまたは空 - このフィールドでフィルタリングしません。ありがとう。

+0

あなたは基準を使用することができますクエリ。 – Abs

答えて

2

アブスが正しいです。ここではif文に提供しませフィルタフィールド用と例です。

User.createCriteria().list { 
    if (filter.name)  eq("name", filter.name) 
    if (filter.age)  eq("age", filter.age) 
    if (filter.department) eq("department", filter.department) 
} 
0

あなたが引数マップ上の砂糖権を適用することができます(フィルタをと仮定すると地図です):

def args = filter.collectEntries{ k, v -> 
    [ 'age', 'name', 'department' ].contains(k) && v ? [ (k):v ] : Collections.EMPTY_MAP 
} 
def users = User.findAll args 
関連する問題