将本机SQL查询的结果映射到Grails域类

时间:2010-01-18 19:26:48

标签: hibernate grails

是否可以将本机SQL查询的结果映射到Grails域类实例的集合?

3 个答案:

答案 0 :(得分:19)

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;

答案 1 :(得分:8)

或者在Grails应用程序中使用Groovy SQL

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

        }

}

答案 2 :(得分:2)

你可以自己映射而不会有太多麻烦。或者,如果使用HQL,您可以使用select new map(),然后使用query.list().collect { new MyDomainObject(it) }手动绑定参数。

相关问题