Доменные классы имеют свойство namedQueries , которое можно использовать для добавления собственных именованных запросов.Если вы хотите сделать это с помощью метапрограммирования из плагина (а не путем непосредственного редактирования класса домена), вам следует сделать это в doWithDynamicMethods закрытии файла дескриптора плагина.
Что-токак это должно работать:
class MyPlugin {
def doWithDynamicMethods = { applicationContext ->
application.domainClasses.each { domainClass ->
boolean domainClassFilter = domainClass as Boolean
if (domainClassFilter) {
domainClass.metaClass.static.myNamedQuery = {->
// implementation of your named query goes here. Here is an example implementation
// that returns all instances with status == 'ready'
String simpleClassName = domainClass.simpleName
domainClass.findAll("from $simpleClassName where status = ?", ['ready'])
}
}
}
}
}
Это добавит myNamedQuery
к каждому классу домена в приложении, в которое установлен плагин. Если вы хотите добавить его только в некоторые классы домена, то замените значениеdomainClassFilter
с более подходящим тестом.