2011-01-05 6 views
14

¿Cuál es la mejor manera de buscar algo sin usar GORM en grial?Grails query not using GORM

Tengo la consulta que no parece para caber en el modelo GORM, la consulta tiene una subconsulta y un campo calculado. Publiqué en stackoverflow ya sin respuesta, así que decidí tomar un enfoque diferente. Quiero consultar algo que no utiliza GORM dentro de una aplicación de Grails. ¿Hay una manera fácil de obtener la conexión y pasar por el conjunto de resultados?

Respuesta

37

En un servicio o controlador, puede agregar una inyección de dependencia para el bean dataSource y usar groovy.sql.Sql o JDBC directamente si es masoquista.

import groovy.sql.Sql 

class DataService { 

    def dataSource 

    void runQuery(...) { 
     def sql = new Sql(dataSource) 
     sql.eachRow('select * from foo') { row -> 
     ... 
     } 
    } 
} 
+0

funciona bien. ¡Gracias! – Tihom

+2

+1 para el masoquista y también para la respuesta ... – fabien7474

-1

En los casos más comunes utilizo consultas de criterios.

def c = Account.createCriteria() 
def results = c { 
    between("balance", 500, 1000) 
    eq("branch", "London") 
    or { 
     like("holderFirstName", "Fred%") 
     like("holderFirstName", "Barney%") 
    } 
    maxResults(10) 
    order("holderLastName", "desc") 
} 
+0

Esto no admite subconsultas de lo que sé – Tihom

+0

@Tihon admite subconsultas porque es una consulta de criterios de hibernación http://docs.jboss.org/ hibernate/core/3.3/reference/es/html/querycriteria.html # querycriteria-detachedqueries – Medrod

+0

@Igs GORM no es criteriaquery. La consulta de criterios se parece más a GROM que a HSQL, pero no es lo mismo. GROM está utilizando meta-métodos y las consultas de criterios utilizarán consultas de criterios de hibernación. – Medrod