views:

420

answers:

2

Hi

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

A: 
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;
Oliver Weichhold
A: 

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.

John Stoneham
True but I'd suppose this would be significantly slower than Hibernate's heavily optimized code.
Oliver Weichhold