我有域对象列表,需要按如下方式调用每个域对象:
(<DOMAIN CLASS>.withCriteria {
dataSecurityGroups {
'in' 'id', entitiesIds as Long[]
}
})
我们的想法是将代码改为一次,同时更改给定参数的代码。
我知道有几种方法可以使用groovy来实现它,我试着全部使用它们。
我需要知道什么是最佳做法和简短的方法。
谢谢!
答案 0 :(得分:0)
我假设你使用的是Grails,因为你用Gorm标记了这个问题。如果是这样,试试这个:
Class clazz = grailsApplication.domainClasses.find { it.clazz.simpleName == "<DOMAINCLASS>" }.clazz
clazz.withCriteria {
dataSecurityGroups {
'in' 'id', entitiesIds as Long[]
}
}
或者替换grailsApplication.domainClasses
并使用您的域类列表。
答案 1 :(得分:0)
你说你有一个域类列表,所以下面的代码假设是真的。你没有说你想对每个查询的结果做什么,所以我假设你已经控制了它。
你可以这样做......
def listOfDomainClasses = // you have initialized this list somehow...
listOfDomainClasses.each { domainClass ->
def resultForThisClass = domainClass.withCriteria {
dataSecurityGroups {
'in' 'id', entitiesIds as Long[]
}
})
// do something with resultForThisClass
}
我希望有所帮助。
答案 2 :(得分:0)
目前尚不清楚你真正想做什么,但也许你想要的是写一个像这样的方法......
/**
* @param someDomainClass A domain class
* @return the results of the query
*/
def myQueryMethod(Class someDomainClass) {
someDomainClass.withCriteria {
dataSecurityGroups {
'in' 'id', entitiesIds as Long[]
}
}
}
然后,您可以调用该方法并将任何域类作为参数传递。
这是你要找的东西吗?