具有选择查询的Grails域对象

时间:2014-04-07 12:25:27

标签: grails gorm

我有一个要求,我需要从5个不同的oracle表中获取10个不同的列。基本上我想执行一个自定义选择查询,我想从你们这里了解我是否可以创建一个自定义域对象并使用grails在这个域对象中填充数据。一些想法,我可以探索更多,这将是伟大的。

由于

2 个答案:

答案 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;