4

我有两个(实际上是 5 个)域类,ClassA 和 ClassB,并且必须在两者上执行相同的查询

ClassA.where { a == b }.list()

ClassB.where { a == b }.list()

我想编写一个服务类来执行传递 Class 对象的这些查询,而不是为每个类创建一个服务。我试过这个解决方案

def clazz = grailsApplication.getDomainClass(domainClass)
clazz.where { a == b }.list()

但我有一个例外告诉我 DefaultGrailsDomainClass 没有“where”方法。

还有其他方法可以做到这一点吗?类似于“ClassA.grailsClass.where {}”

谢谢

4

1 回答 1

4

getDomainClass的返回值为GrailsDomainClass/ DefaultGrailsDomainClass。调用它的getClazz方法来获取它包装的类:

def clazz = grailsApplication.getDomainClass(domainClass).clazz
clazz.where { a == b }.list()
于 2012-07-27T15:33:04.907 回答