Результат сопоставления собственного запроса SQL с классом домена Grails - PullRequest
17 голосов
/ 18 января 2010

Можно ли отобразить результат собственного запроса SQL на коллекцию экземпляров класса домена Grails?

Ответы [ 3 ]

19 голосов
/ 18 января 2010
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;
8 голосов
/ 06 сентября 2012

Альтернативно использование Groovy SQL в приложении 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

        }

}
2 голосов
/ 19 января 2010

Вы можете составить карту самостоятельно без особых проблем. В качестве альтернативы, если вы используете HQL, вы можете использовать select new map(), а затем взять query.list().collect { new MyDomainObject(it) }, чтобы связать параметры вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...