JPA Конкат оператор - PullRequest
       12

JPA Конкат оператор

29 голосов
/ 14 декабря 2011

Существует ли оператор конкатенации JPA для конкатенации строк?

Я знаю, что есть функция JPA CONCAT, однако ее некрасиво использовать для объединения нескольких строк.

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

Поставщики, такие как Oracle, предлагают ||, другие, например, Microsoft, предлагают +. Существует ли стандартный оператор конкатенации JPA, чтобы я мог создать запрос типа

cola || colb || colc || cold

Я пытался +, используя openjpa с SQL Server, однако, похоже, что он недействителен JPQL. Я не смог найти ничего о таком операторе в справочнике oracle .

Ответы [ 3 ]

45 голосов
/ 14 декабря 2011

Функция CONCAT была расширена в JPA 2.0 , чтобы разрешить передачу более 2 параметров, из раздела 4.6.17.2.1 (Функции строки) спецификации:

CONCAT(string_primary, string_primary {, string_primary}* )

В JPA 1 это было ограничено ровно двумя параметрами.

11 голосов
/ 14 декабря 2011

Вы можете использовать функцию JPA Concat для нескольких строк.

Например:

CONCAT(cola, colb, colc, cold)
7 голосов
/ 20 октября 2016

Вы также можете использовать || в качестве оператора сцепления, см. в документации

HQL определяет оператор конкатенации в дополнение к поддержке функция конкатенации (CONCAT). Это не определяется JPQL, поэтому портативные приложения должны избегать его использования. Оператор конкатенации взято из оператора конкатенации SQL - ||.

Пример 11.19. Пример операции конкатенации

select 'Mr. ' || c.name.first || ' ' || c.name.last
from Customer c
where c.gender = Gender.MALE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...