在Grails中使用listAgg和H2 db

时间:2016-06-13 12:57:15

标签: java hibernate grails hql dialect

我有一个grails应用程序。我们支持Oracle db和H2 db。

我在开发环境中使用prod和H2 DB上的Oracle 11g DB。 我有“listAgg”函数的hibernate查询。它在Oracle上运行良好。 但H2不支持此功能。如何在H2中使用此功能呢?

我认为可以通过自定义方言来完成。但我不明白怎么做。任何人都可以详细解释一下吗?

我看到H2有'group_concat'功能,类似于listAgg。我可以配置我的应用程序,以便'group_concat'用于H2DB而不是listAgg。

Grails 2.3.11。

非常感谢!

1 个答案:

答案 0 :(得分:0)

LISTAGG是Oracle特有的功能。您将无法在其他数据库中使用它。例如,在MSSQL中,替代方法可以是使用STUFF函数。

如果在H2中需要它,则必须使用此名称定义用户定义的函数,该函数与LISTAGG在Oracle中的作用相同。有关详细信息,请参阅http://www.h2database.com/html/features.html#user_defined_functions