gorm ドメイン クラスでは、次のことができます。
def q = {
property1{
eq('attr', 0)
}
}
MyDomainClass.list(q)
たとえば、別のプロパティ制限を追加できるように、実行時にクロージャー 'q' を変更する (またはクロージャー 'q' が持つ制限を含む新しいクロージャーを作成する) にはどうすればよいですか?
詳細
実際、私の問題は、ドメイン クラス階層で複合条件を作成する方法です。
class Parent{
int pAttr
static def getCriteria(){
def dummyParentCriteria = {
eq('pAttr', 0)
}
}
}
class Child extends Parent{
int cAttr
static def getCriteria(){
def dummyChildCriteria = {
// (1)
eq('cAttr', 0)
}
}
}
「dummyChildCriteria」では、親の制限を繰り返さないようにしたい。
親の getCriteria の結果を何らかの方法で結合したいと思います (1)
名前付きクエリの継承によるソリューション
class Parent{
int pAttr
static namedQueries = {
parentCriteria{
eq('pAttr', 0)
}
}
}
class Child extends Parent {
int cAttr
static namedQueries = {
childCriteria{
parentCriteria()
eq('cAttr', 0)
}
}
}
しかし、誰かが最初の質問に対する答えを知っているなら、それを知っておくといいでしょう!