可以是在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
thansk
答案 0 :(得分:1)
Hibernate以及位于Hibernate之上的HQL / GORM层并不直接支持Oracle 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语句。有关示例,请参阅here。