2012-07-27 123 views
4

我有两个(5实际上)域类,ClassA和ClassB的和必须在两个的grails:传递一个Grails域类作为函数参数

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

​​ 执行相同的查询

我想编写一个服务类来执行这些查询传递Class对象,而不是为每个类创建一个服务。我试图this solution

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

,但我有一个例外,告诉我,DefaultGrailsDomainClass不具备“其中”方法。

是否有其他方法可以做到这一点?像 “ClassA.grailsClass.where {}”

感谢

回答

4

getDomainClass返回值是一个GrailsDomainClass/DefaultGrailsDomainClass。打电话给它的getClazz方法来得到它的类包装:

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

我试图做findAll()查询,但它总是返回所有域对象的相同的事情。查询如下所示:''clazz.findAll {prop == value}''我想知道这是否是Grails 2.1.1中的一个bug? – apa64 2013-01-13 20:16:23