在Grails中将listAgg与H2数据库一起使用

2019年8月4日 27点热度 0条评论

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

我在产品上使用Oracle 11g DB,在开发环境上使用H2 DB。
我有带有“listAgg”功能的休眠查询。它在Oracle上运行良好。
但是H2不支持此功能。我也可以在H2上使用此功能吗?

我认为可以通过自定义方言来完成。但是我不知道如何。谁能详细解释?

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

Grails 2.3.11。

非常感谢!

解决方案如下:

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

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