私はコードの下のブロックのように見えるように、この上のブロックを抽象化しようとしています。grailsの基準メソッドのクロージャを返すカスタム関数を作成する方法
if (params.xId) {
and {
'in'(aggregateClassReference, hierarchy['x'])
eq(aggregateIdReference, params.xId as Long)
}
}
if (params.yId) {
and {
'in'(aggregateReference, hierarchy['y'])
eq(aggregateIdReference, params.yId as Long)
}
}
...
if (params.xId) { belongsToHierarchy('x', params.xId as Long) }
if (params.yId) { belongsToHierarchy('y', params.yId as Long) }
私はGORM基準クエリを使用していますが、私は、コードのこれらの大きな塊を望んでいません。これらの条件クエリのクロージャをカスタム関数で返す方法はありますか?問題は、今私が
def criteria = DetachedCriteria.build(...)
にコードの下の塊を入れている。その後、私は実行するために
criteria.list(...)
を行います。何とかビルド内のカスタム機能でちょうど
and {
'in'{...}
eq {...}
}
の閉鎖を返すために素晴らしいことだろうが、私はまだそれを把握することができていません。 grailsに少し新しい。私を導くどんな洞察も大いに評価されるでしょう:)
おそらく名前付き問合せは役立つかもしれませんか?あなたはそれらを調べましたか? http://docs.grails.org/latest/ref/Domain%20Classes/namedQueries.html –