JPA concat运营商

Udo*_*eld 29 java jpa concatenation jpql jpa-2.0

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

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

CONCAT(CONCAT(CONCAT(cola,colb),colc),cold)
Run Code Online (Sandbox Code Playgroud)

像甲骨文||这样的供应商提供其他类似微软的产品 +.是否有标准的JPA连接运算符,以便我可以创建一个类似的查询

cola || colb || colc || cold
Run Code Online (Sandbox Code Playgroud)

我尝试+将openjpa与SQL Server一起使用,但它似乎是无效的JPQL.我在oracle参考中找不到关于这样的运算符的任何内容.

Jör*_*ann 46

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

CONCAT(string_primary, string_primary {, string_primary}* )
Run Code Online (Sandbox Code Playgroud)

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


yer*_*glu 11

您可以将JPA Concat函数用于多个字符串.

例如:

CONCAT(cola, colb, colc, cold)
Run Code Online (Sandbox Code Playgroud)

  • 检查了。我在openjpa上遇到了例外。我链接的参考(http://docs.oracle.com/cd/E16764_01/apirefs.1111/e13946/ejb3_langref.html#ejb3_langref_string_fun)也仅显示了两个参数。 (2认同)

小智 7

您还可以使用||作为连接运算符,请参阅文档

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

例11.19.连接操作示例

select 'Mr. ' || c.name.first || ' ' || c.name.last
from Customer c
where c.gender = Gender.MALE
Run Code Online (Sandbox Code Playgroud)