2016-06-13 83 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函數的'內'部分的問題。我如何定義它? –