2016-06-13 12 views
1

Ich habe eine Grails-Anwendung. Wir unterstützen Oracle db und H2 db.Verwenden Sie listAgg mit H2 db in Grails

Ich benutze Oracle 11g DB auf Prod und H2 DB auf Dev-Umgebung. Ich habe Hibernate Abfrage mit "listAgg" -Funktion. Es funktioniert gut mit Oracle. Aber H2 unterstützt diese Funktion nicht. Was kann ich tun, um diese Funktion auch mit H2 zu nutzen?

Ich denke, dass es durch benutzerdefinierte Dialekt getan werden kann. Aber ich verstehe nicht wie. Kann mir das jemand im Detail erklären?

Ich sehe H2 hat 'Group_concat' Funktion, die listAgg ähnlich ist. Kann ich meine Anwendung so konfigurieren, dass der 'group_concat' für H2DB anstelle von listAgg verwendet wird.

Graillen 2.3.11.

Vielen Dank!

Antwort

0

LISTAGG ist eine Oracle-spezifische Funktion. Sie können es nicht in anderen Datenbanken verwenden. Zum Beispiel in MSSQL Alternative könnte sein, STUFF Funktion zu verwenden.

Wenn Sie es in H2 benötigen, müssten Sie eine benutzerdefinierte Funktion mit diesem Namen definieren, die dasselbe wie LISTAGG in Oracle tut. Siehe http://www.h2database.com/html/features.html#user_defined_functions für Details

+0

Vielen Dank für Ihre Antwort! Aber ich möchte es mit Grails und Ruhezustand, nicht native SQL verwenden. –

+0

Funktioniert das nicht? https://bhavikablog.wordpress.com/2012/12/07/adding-custom-function-in-hibernate-with-custom-dialects/ – droggo

+0

Ich habe ein Problem mit 'innerhalb' von ListAgg Orakel-Funktion. Wie kann ich es definieren? –