web-dev-qa-db-fra.com

Opérateur de concat JPA

Existe-t-il un opérateur de concaténation JPA pour la concaténation de chaînes?

Je sais qu'il y a une fonction JPA CONCAT, mais c'est moche à utiliser pour concaténer plusieurs chaînes.

CONCAT(CONCAT(CONCAT(cola,colb),colc),cold)

Des fournisseurs comme Oracle proposent || une autre offre similaire à Microsoft +. Existe-t-il un opérateur de concaténation JPA standard pour que je puisse créer une requête comme

cola || colb || colc || cold

J'ai essayé + en utilisant openjpa avec SQL Server, mais il ne semble pas être valide JPQL. Je n'ai rien trouvé concernant un tel opérateur dans un référence Oracle .

29
Udo Held

La fonction CONCAT a été étendue dans JPA 2. pour permettre le passage de plus de 2 paramètres, à partir de la section 4.6.17.2.1 (Fonctions de chaîne) de la spécification:

CONCAT(string_primary, string_primary {, string_primary}* )

Dans JPA 1, cela était limité à exactement deux paramètres.

46
Jörn Horstmann

Vous pouvez utiliser la fonction JPA Concat pour plusieurs chaînes.

Par exemple:

CONCAT(cola, colb, colc, cold)
11
yerlikayaoglu

Vous pouvez aussi utiliser || en tant qu'opérateur de concaténation, voir dans la documentation

HQL définit un opérateur de concaténation en plus de prendre en charge la fonction de concaténation (CONCAT). Ceci n'est pas défini par JPQL, donc les applications portables devraient éviter son utilisation. L'opérateur de concaténation est extrait de l'opérateur de concaténation SQL - ||.

Exemple 11.19. Exemple d'opération de concaténation

select 'Mr. ' || c.name.first || ' ' || c.name.last
from Customer c
where c.gender = Gender.MALE
7
Eydwales