2010-03-12 58 views
4

我想将原生SQL查询的结果映射到grails中的简单bean,类似于@SqlResultSetMapping批注所做的。Grails/GORM中的结果集映射

例如,给定一个查询

select x.foo, y.bar, z.baz from //etc...

映射结果

class FooBarBaz { 
    String foo 
    String bar 
    String baz 
} 

任何人都可以提供如何做到这一点Grails中的例子吗? 在此先感谢。

+0

重复的http://stackoverflow.com/questions/2088641/mapping-result-of-a-native-sql-query-to-grails-域名级 – ataylor

+0

您好泰勒,您链接到的帖子涉及映射到域类 - 完全不同的情况。 – armandino

回答

2

我测试了这个成功的Grails的控制台

import groovy.sql.Sql 

class FooBarBaz { 
    String foo 
    String bar 
    String baz 
} 

// Initialising the Sql object like this ensures that the SQL statement 
// will participate in the current transaction (if one exists)   
// 'ctx' refers to the Spring ApplicationContext when using the Grails console 
def sessionFactory = ctx.getBean('sessionFactory') 
Sql sql = new Sql(sessionFactory.currentSession.connection()) 

def query = 'select email, user_real_name, phone from user' 
def results = [] 
sql.eachRow query, {row -> results << new FooBarBaz(foo: row.email, bar: row.user_real_name, baz: row.phone)}