Ich versuche, diesen oberen Block des Codes aus wie der untere Block des Codes aus.Wie erstellt man eine benutzerdefinierte Funktion, die eine Schließung der Grails-Kriterien Methoden
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) }
Ich verwende Abfragen gorm Kriterien, aber ich will nicht, diese großen Brocken von Code. Gibt es eine Möglichkeit, eine Schließung dieser Kriterienabfragen in einer benutzerdefinierten Funktion zurückzugeben? Das Problem ist im Moment habe ich die folgenden Stücke von Code in
setzendef criteria = DetachedCriteria.build(...)
Danach habe ich ein
criteria.list(...)
auszuführen. Es wäre toll, irgendwie eine Schließung nur die Rückkehr
and {
'in'{...}
eq {...}
}
in einer benutzerdefinierten Funktion im Build, aber ich habe nicht in der Lage gewesen, dass noch herauszufinden. Ein bisschen neu für das Gral. Jeder Einblick, um mich zu führen, wäre sehr geschätzt :)
Vielleicht benannte Abfragen helfen könnten? Hast du in sie hineingeschaut? http://docs.grails.org/latest/ref/Domain%20Classes/namedQueries.html –