【问题标题】:Grails domain object with select query带有选择查询的 Grails 域对象
【发布时间】:2014-05-19 16:37:39
【问题描述】:

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

谢谢

【问题讨论】:

  • 为什么需要域类?您可以使用普通的 Groovy SQL 来执行您想要的任何查询。在这里使用域类似乎有点过头了。

标签: grails grails-orm


【解决方案1】:

您可以直接使用带有dataSource bean 的Groovy SQL。这是来自集成测试的示例。

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 的列表,基本上可以像地图一样对待

【讨论】:

    【解决方案2】:

    您可以尝试此处建议的方法: 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-02
      • 2020-04-23
      • 2014-04-06
      • 2020-01-01
      • 2017-06-13
      • 2016-05-08
      • 1970-01-01
      相关资源
      最近更新 更多