在GORM (使用grails)中,我需要将子选择多个结果组合成一个值。(该子选择的结果将是连接值,我可以对其进行搜索/排序等.)查询被写为HQL。甲骨文http://www.techonthenet.com/oracle/functions/listagg.php中类似的东西
是否能在HQL (例如GORM)中实现这样的目标?
...
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桑斯克
发布于 2014-11-06 22:28:59
Hibernate和位于Hibernate之上的HQL/GORM层不直接支持数据库特定的函数,比如甲骨文的LISTAGG()。但是,有几种方法可以在Grails中使用本机SQL。如果要将级联的值添加到域对象之一,则可以使用GORM的派生属性功能(http://grails.org/doc/latest/guide/GORM.html#derivedProperties)。
类似于这样的东西:
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语句。有关示例,请参见这里。
https://stackoverflow.com/questions/26786637
复制相似问题