Подтвердить что ты не робот

Оператор JPA concat

Есть ли оператор конкатенации JPA для конкатенации JPA?

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

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

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

cola || colb || colc || cold

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

4b9b3361

Ответ 1

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

CONCAT(string_primary, string_primary {, string_primary}* )

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

Ответ 2

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

Например:

CONCAT(cola, colb, colc, cold)

Ответ 3

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

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

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

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