È possibile mappare il risultato di una query SQL nativa a una raccolta di istanze di classi di dominio Grails?Mappatura del risultato di una query SQL nativa alla classe di dominio Grails
risposta
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;
È possibile mapparlo da soli senza troppi problemi. In alternativa, se si utilizza HQL, è possibile utilizzare select new map()
e quindi prendere query.list().collect { new MyDomainObject(it) }
per eseguire il bind dei parametri manualmente.
Vero, ma suppongo che questo sarebbe molto più lento del codice fortemente ottimizzato di Hibernate. –
alternativa usando Groovy SQL in app 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) ha esito negativo in quanto non esiste un metodo che accetta un oggetto datasourc. – benstpierre
- 1. Risultato query nativa EclipseLink in POJO: descrittore mancante per [Classe]
- 2. Aggiornamento del campo "lastUpdated" nella classe Dominio padre in Grails
- 3. Utilizzo del servizio Grails nella classe di dominio
- 4. mappatura Hibernate risultati delle query alla classe personalizzata?
- 5. insolito sql risultato della query server di
- 6. Impossibile utilizzare grails g.link nella classe dominio
- 7. molteplici relazioni hasMany per stessa classe di dominio in Grails
- 8. Python Sql Alchemy - Come jsonificare un risultato di un oggetto classe da una query di database
- 9. Come posso ottenere il tipo (classe) di una proprietà di un oggetto di dominio Grails?
- 10. Query Sql per inserimento in grails
- 11. Grails vincoli di dominio di definizione
- 12. Come utilizzare Enum in Grails (non nella classe di dominio)
- 13. In Grails come si accede alla sessione di sospensione all'interno di un metodo statico di classe dominio?
- 14. Come si crea una riga aggiunta da QueryAddRow() alla prima riga del risultato di una query?
- 15. Mappatura dei risultati Linq Query a una classe DTO
- 16. Utilizzo della clausola IN in una query sql nativa
- 17. Come si crea una variabile temporanea in una classe di dominio Grails?
- 18. È possibile in Grails disabilitare la persistenza di una classe di dominio?
- 19. Grails miglior modo per iterare tutti gli ID di una classe di dominio
- 20. Devo implementare equals e hashCode in una classe di dominio?
- 21. Come ottenere l'estensione del file come risultato della query sql?
- 22. Collegamento a Grails Oggetto di dominio save()
- 23. Grails Scaffolding - definisce i possibili valori per questa proprietà di una classe di dominio
- 24. Come utilizzare una sessione nativa shiro in un'applicazione web Grails?
- 25. Ordinamento predefinito di Grails degli attributi del dominio "hasMany"
- 26. Risultato query SQL in una stringa (o variabile)
- 27. Come modificare la codifica per una colonna nel dominio Grails
- 28. Rinomina nome campo visualizzato in classe dominio Grails
- 29. Query SQL, memorizza il risultato di SELECT nella variabile locale
- 30. Grails 3 @Negistrazione del delegato, utilizzando un oggetto dominio
questo è stato molto utile! – Topera
Grazie. Mi ha aiutato anche io ... –
Ciò che mi mancava in questa risposta è che 'def sessionFactory' deve apparire nel controllo (se lo fai in un controller come me). Il campo viene iniettato e quindi puoi eseguire sessionFactory.currentSession. – Jason