我有一个要求,我需要从5个不同的oracle表中获取10个不同的列。基本上我想执行一个自定义选择查询,我想从你们这里了解我是否可以创建一个自定义域对象并使用grails在这个域对象中填充数据。一些想法,我可以探索更多,这将是伟大的。
由于
答案 0 :(得分:0)
您可以将直接Groovy SQL与dataSource
bean一起使用。这是集成测试的一个例子。
def dataSource
@Test
public void sql() {
Sql sql = new Sql(dataSource)
List<GroovyRowResult> results = sql.rows("select * from user")
println results[0].first_name
println results[0].<COLUMN_NAME>
}
无论您需要使用哪种原始SQL都可以放在对sql.rows()
的调用中,结果是GroovyRowResult
的列表,它基本上可以像地图一样对待
答案 1 :(得分:0)
你可以尝试这里建议的东西: Mapping result of a native SQL query to Grails domain class
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;