2012-07-27 67 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