同じような検索条件があるときに、冗長化してちゃってダサくならないようにするには以下のようにする
まず、検索条件だけのクロージャーを作る
1 2 3 4 5 6 |
def searchConditionPart = { ge("id", searchCondition.id) order("id", "asc") } |
次に使う
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
def resultCriteria = Domain.createCriteria() def allList = resultCriteria.list([max : 10, offset: offset], { searchConditionPart.delegate = delegate searchConditionPart() }); // reuser search conditions resultCriteria = Domain.createCriteria() allList = resultCriteria.list([max : 10, offset: offset], { searchConfition.delegate = delegate eq("xxxx", "yyyyy") searchConfition() }); |
projections とかも同様に再利用できる
1 2 3 4 5 6 7 8 |
def searchProjections = { projections { sum("price") groupProperty("contact") } } |
検索条件の時と同じように使う
1 2 3 4 5 6 7 |
def resultList = criteria.list { isNull("saleDate") searchProjections.delegate = delegate searchProjections() } |