首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GORM / HQL - LISTAGG

GORM / HQL - LISTAGG
EN

Stack Overflow用户
提问于 2014-11-06 18:22:19
回答 1查看 1.4K关注 0票数 1

在GORM (使用grails)中,我需要将子选择多个结果组合成一个值。(该子选择的结果将是连接值,我可以对其进行搜索/排序等.)查询被写为HQL。甲骨文http://www.techonthenet.com/oracle/functions/listagg.php中类似的东西

是否能在HQL (例如GORM)中实现这样的目标?

代码语言:javascript
复制
...
AND (
    SELECT LISTAG(e.title) AS con FROM Entity e
    WHERE Entity.searchKey = TRUE
    AND e.parrent = par
    AND LOWER(e.title) LIKE :search
) > 0
...
ORDER BY con ASC

桑斯克

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-06 22:28:59

Hibernate和位于Hibernate之上的HQL/GORM层不直接支持数据库特定的函数,比如甲骨文的LISTAGG()。但是,有几种方法可以在Grails中使用本机SQL。如果要将级联的值添加到域对象之一,则可以使用GORM的派生属性功能(http://grails.org/doc/latest/guide/GORM.html#derivedProperties)。

类似于这样的东西:

代码语言:javascript
复制
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语句。有关示例,请参见这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26786637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档