Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql GORM/HQL-LISTAGG_Sql_Oracle_Grails_Hql_Gorm - Fatal编程技术网

Sql GORM/HQL-LISTAGG

Sql GORM/HQL-LISTAGG,sql,oracle,grails,hql,gorm,Sql,Oracle,Grails,Hql,Gorm,在GORM(使用grails)中,我需要在subselect中将多个结果合并为一个值。(此子选择的结果将是连接的值,我可以对其进行搜索/排序等…) 查询被写为HQL。在甲骨文中是这样的 可以在HQL中实现类似的功能(例如GORM) thanskHibernate和位于Hibernate之上的HQL/GORM层不直接支持特定于数据库的功能,如Oracle的listag()。但是,有几种方法可以在Grails中使用本机SQL。如果要将连接的值添加到域对象之一,可以使用GORM的派生属性功能() 大

在GORM(使用grails)中,我需要在subselect中将多个结果合并为一个值。(此子选择的结果将是连接的值,我可以对其进行搜索/排序等…) 查询被写为HQL。在甲骨文中是这样的

可以在HQL中实现类似的功能(例如GORM)


thansk

Hibernate和位于Hibernate之上的HQL/GORM层不直接支持特定于数据库的功能,如Oracle的
listag()
。但是,有几种方法可以在Grails中使用本机SQL。如果要将连接的值添加到域对象之一,可以使用GORM的派生属性功能()

大致如下:

class MyDomain {
    Long parentId
    String titleAgg

    static mapping = {
        titleAgg formula: '(SELECT LISTAGG(e.title) FROM Entity e WHERE e.parrent = parent_id)'
    }

}

第二种选择是使用Grails定义的
dataSource
bean以及
groovy.sql.sql
来执行本机sql语句。请参见示例。

非常感谢!我认为定义的数据源在我的场景中可以很好地工作。这种sql的结果是GroovyRowResult的集合(根据您发布的链接中的示例)->所以我只需要在执行之后将它映射到我的域实体中。但是,当这些实体只有4个属性时,它将是简单的。我看到的唯一问题是:我的复杂查询是用HQL编写的(它是动态的等等)->我只需要找到如何将HQL转换为nativeSQL的方法,然后我就可以按照上面描述的方式添加execute。
class MyDomain {
    Long parentId
    String titleAgg

    static mapping = {
        titleAgg formula: '(SELECT LISTAGG(e.title) FROM Entity e WHERE e.parrent = parent_id)'
    }

}