Отображение набора результатов в Grails/GORM

Я хочу сопоставить результат собственного SQL-запроса с простым bean-компонентом в grails, подобно тому, как это делает аннотация @SqlResultSetMapping.

Например, по заданному запросу

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

сопоставьте результат с

class FooBarBaz {
  String foo
  String bar
  String baz
}

Может ли кто-нибудь привести пример того, как это сделать в Grails? Заранее спасибо.


person armandino    schedule 12.03.2010    source источник
comment
Дубликат stackoverflow.com/questions/2088641/   -  person ataylor    schedule 12.03.2010
comment
Привет, Тейлор, пост, на который вы ссылаетесь, включает сопоставление с классом домена - совершенно другой случай.   -  person armandino    schedule 12.03.2010


Ответы (1)


Я успешно протестировал это в консоли 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)}
person Dónal    schedule 12.03.2010