grails: pasar una clase de dominio de grails como un argumento de función

Tengo dos (5 de hecho) clases de dominio, ClassA y ClassB y tengo que ejecutar la misma consulta en ambos

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

y

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

Quiero escribir una clase de servicio para ejecutar estas consultas pasando el objeto Clase en lugar de crear un servicio para cada clase. Lo intenté esta solución

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

pero tengo una excepción que me dice que DefaultGrailsDomainClass no tiene el método 'dónde'.

¿Hay otra manera de hacer esto? algo como "ClassA.grailsClass.where {}"

Muchas Gracias

preguntado el 27 de julio de 12 a las 16:07

1 Respuestas

El valor de retorno de getDomainClass es un GrailsDomainClass / DefaultGrailsDomainClass. Llamar a su getClazz método para obtener la clase que envuelve:

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

Respondido 27 Jul 12, 16:07

Estoy tratando de hacer lo mismo con findAll() where query, pero siempre devuelve todos los objetos de dominio. La consulta es así: clazz.findAll { prop == value } Me pregunto si esto es un error en Grails 2.1.1. - apa64

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.