JPA concat运营商

时间:2011-12-14 12:28:11

标签: java jpa jpa-2.0 concatenation jpql

是否有用于字符串连接的JPA concat运算符?

我知道有一个JPA CONCAT函数,但它用于连接多个字符串很难看。

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

Oracle等供应商提供||其他类似Microsoft提供的+。是否有标准的JPA连接运算符,以便我可以创建像

这样的查询
cola || colb || colc || cold

我使用openjpa和SQL Server尝试+,但它似乎是无效的JPQL。我在oracle reference中找不到关于此类运算符的任何内容。

3 个答案:

答案 0 :(得分:43)

JPA 2.0 中扩展了CONCAT函数,以允许传递超过2个参数,来自规范的4.6.17.2.1节(字符串函数):

CONCAT(string_primary, string_primary {, string_primary}* )

在JPA 1中,这仅限于两个参数。

答案 1 :(得分:10)

您可以将JPA Concat功能用于多个字符串。

例如:

CONCAT(cola, colb, colc, cold)

答案 2 :(得分:7)

您也可以使用||作为连接运算符,请参阅on the documentation

  

HQL除了支持连接之外还定义了连接运算符   连接(CONCAT)功能。这不是由JPQL定义的,所以   便携式应用程序应避免使用它。连接运算符   取自SQL连接运算符 - ||。

     

例11.19。连接操作示例

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