Оператор JPA concat
Есть ли оператор конкатенации JPA для конкатенации JPA?
Я знаю, что есть функция JPA CONCAT
, но ее уродливая для конкатенирования нескольких строк.
CONCAT(CONCAT(CONCAT(cola,colb),colc),cold)
Поставщики, такие как Oracle, предлагают ||
некоторые другие, такие как Microsoft, предлагающие +
. Существует ли стандартный конкатенационный оператор JPA, чтобы я мог создать запрос типа
cola || colb || colc || cold
Я пробовал +
с помощью openjpa с SQL Server, но, похоже, это недействительный JPQL. Я не мог найти ничего такого оператора в ссылка оракула.
Ответы
Ответ 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