Mapping result of a native SQL query to Grails domain class

后端 未结 3 1703
长情又很酷
长情又很酷 2020-12-14 09:46

Is it possible to map the result of a native SQL query to a collection of Grails domain class instances?

相关标签:
3条回答
  • 2020-12-14 10:06

    You could map it yourself without too much trouble. Alternatively if using HQL, you could use select new map() and then take query.list().collect { new MyDomainObject(it) } to bind the parameters by hand.

    0 讨论(0)
  • 2020-12-14 10:14
    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;
    
    0 讨论(0)
  • 2020-12-14 10:20

    Alternatively using Groovy SQL in the Grails app

    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
    
            }
    
    }
    
    0 讨论(0)
提交回复
热议问题