2016-06-13 39 views
1

我有一个grails应用程序。我们支持Oracle db和H2 db。在Grails中使用listAgg和H2 db

我在产品上使用Oracle 11g数据库,在开发环境上使用H2数据库。 我有“listAgg”函数的休眠查询。它在Oracle上运行良好。 但H2不支持此功能。我能做什么来使用这个功能与H2也?

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

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

Grails 2.3.11。

非常感谢!

回答

0

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

如果你在H2中需要它,你将不得不使用这个名字来定义用户定义的函数,这与LISTAGG在Oracle中所做的一样。详情请见http://www.h2database.com/html/features.html#user_defined_functions

+0

感谢您的回复!但我想用它与Grails和休眠,而不是本机SQL。 –

+0

这不工作? https://bhavikablog.wordpress.com/2012/12/07/adding-custom-function-in-hibernate-with-custom-dialects/ – droggo

+0

我有ListAgg oracle函数的'内'部分的问题。我如何定义它? –