¿Es posible asignar el resultado de una consulta SQL nativa a una colección de instancias de clase de dominio Grails?Asignación del resultado de una consulta SQL nativa a la clase de dominio Grails
Respuesta
import com.acme.domain.*
def sessionFactory
sessionFactory = ctx.sessionFactory // this only necessary if your are working with the Grails console/shell
def session = sessionFactory.currentSession
def query = session.createSQLQuery("select f.* from Foo where f.id = :filter)) order by f.name");
query.addEntity(com.acme.domain.Foo.class); // this defines the result type of the query
query.setInteger("filter", 88);
query.list()*.name;
Puede hacerlo usted mismo sin demasiados problemas. Alternativamente, si usa HQL, puede usar select new map()
y luego tomar query.list().collect { new MyDomainObject(it) }
para enlazar los parámetros a mano.
Es cierto, pero supongo que esto sería significativamente más lento que el código altamente optimizado de Hibernate. –
Alternativamente usando Groovy SQL en la aplicación Grails
import groovy.sql.Sql
class TestQService{
def dataSource //Auto Injected
def getBanksForId(int bankid){
def sql = Sql.newInstance(dataSource)
def rows = sql.rows(""" Select BnkCode , BnkName from Bank where BnkId = ?""" , [bankid])
rows.collect{
new Bank(it)
}
}
class Bank{
String BnkCode
String BnkName
}
}
Sql.newInstance (dataSource) falla ya que no hay un método que tome un objeto datasourc. – benstpierre
- 1. ¿Cómo se modifica una clase de dominio en Grails?
- 2. Grails restricciones del dominio de definición
- 3. SQL Encontrar el tamaño del resultado de la consulta
- 4. Campo de tiempo En la clase de dominio de grails
- 5. Usando la cláusula IN en una consulta SQL nativa
- 6. En Grails, ¿cómo declaro un nombre de esquema de SQL Server para una clase de dominio?
- 7. Objeto de asignación de objeto de dominio de dominio a dominio DB
- 8. Grails: dinámicamente inyectan servicio en la clase de dominio
- 9. SQL/Database Views in Grails
- 10. Consulta JPA - inyección sql en parámetros posicionales jpa consulta nativa
- 11. ¿Cómo eliminar filas nulos de resultado de la consulta SQL?
- 12. Asignación de resultados de consulta de Linq a una clase de DTO
- 13. ¿Cómo puedo usar el operador de asignación de MySQL (: =) en la consulta nativa de hibernación?
- 14. Consulta SQL para insertar en grails
- 15. Uso del servicio de grillas en el dominio clase
- 16. ¿Cómo obtener la extensión de archivo del archivo como resultado de la consulta SQL?
- 17. Limitar el resultado de la consulta SQL en MySQL
- 18. ¿Cómo obtengo el tipo (clase) de una propiedad de un objeto de dominio Grails?
- 19. ¿Cómo creo y la validación XOR para dos campos en una clase de dominio Grails?
- 20. APP nativa de consulta para la Entidad con la herencia
- 21. Enlace JSON a objetos de dominio Grails anidados
- 22. ¿Cómo creo una variable transitoria en una clase de dominio de Grails?
- 23. Asignación XML-a-SQL
- 24. En Grails, ¿cómo accedo a la sesión de hibernación dentro de un método estático de clase de dominio?
- 25. Uso de la cláusula IN en una consulta sql nativa con Hibernate 3.2.2
- 26. Consulta de LINQ que devuelve varias copias del primer resultado
- 27. SQLite3 (o SQL general) recuperar enésima fila del resultado de una consulta
- 28. encapsulando la lógica en una consulta de linq a sql a través del método de extensión
- 29. Prefijo de asignación de URL en Grails
- 30. Renombrar nombre de campo mostrado en la clase de dominio Grails
esto fue muy útil! – Topera
Gracias. Me ayudó también ... –
Lo que me faltaba en esta respuesta es que 'def sessionFactory' debe aparecer en el control (si estás haciendo esto en un controlador como yo). El campo se inyecta y luego puede hacer sessionFactory.currentSession. – Jason