Ist es möglich, JPA zu verwenden, um eine benutzerdefinierte Aggregationsfunktion zu haben, die concat () erweitern würde, so dass es Spaltenwerte in eine einzelne Zeichenfolge verkettet?
Ich hatte kürzlich mit der JPA- und H2-Datenbank das gleiche Problem. Ich habe versucht, die GROUP_CONCAT -Funktion von JPQL mit einem Funktionsaufruf (siehe unten) ohne Erfolg aufzurufen. Schließlich habe ich stattdessen einen nativen Abfrageanruf verwendet.
Aber die JPA 2.1 Spezifikationen erwähnen, dass Sie kann eine vordefinierte oder benutzerdefinierte Datenbankfunktion entweder als skalare oder als aggregierte Funktion aufrufen (Funktionsaufruf). Ich habe danach den Absatz aus der Spezifikation durch Hervorhebung des relevanten Teils reproduziert.
4.6.17.3 Aufruf von vordefinierten und benutzerdefinierten Datenbankfunktionen
Der Aufruf von anderen Funktionen als den integrierten Funktionen der Java Persistence-Abfragesprache wird durch die
%Vor%function_invocation
-Syntax unterstützt. Dies beinhaltet den Aufruf vordefinierter Datenbankfunktionen und benutzerdefinierter Datenbankfunktionen.Das Argument Funktionsname ist eine Zeichenfolge, die die Datenbankfunktion angibt, die aufgerufen werden soll. Die Argumente müssen für die Datenbankfunktion geeignet sein, die aufgerufen werden soll. Das Ergebnis der Funktion muss für den Aufrufkontext geeignet sein.
Die Funktion kann eine datenbankdefinierte Funktion oder eine benutzerdefinierte Funktion sein. Die Funktion kann eine skalare Funktion oder eine Aggregatfunktion sein .
Anwendungen, die die Syntax function_invocation verwenden, sind nicht über Datenbanken hinweg portierbar.
Beispiel:
%Vor%
Referenz: Java Persistence 2.1, endgültige Version
Tags und Links jpa