2011-12-14 36 views
20

是否有字符串連接的JPA concat運算符?JPA concat運算符

我知道有一個JPA CONCAT函數,但它的醜陋用於連接多個字符串。

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

廠商,如甲骨文的報價||一些其他類似微軟的報價+。有沒有一個標準JPA連接運算符,這樣我就可以創建

cola || colb || colc || cold 

查詢我將OpenJPA與SQL Server試圖+,但它似乎是無效的JPQL。 oracle reference我找不到關於這樣的運營商的任何信息。

回答

33

CONCAT函數,JPA 2.0擴展,以允許通過多於2個參數,從節4.6.17.2.1(字符串函數):

CONCAT(string_primary, string_primary {, string_primary}*) 

在JPA 1中,這僅限於兩個參數。

+0

嗯。奇怪。按照您的描述,http://download.oracle.com/otn-pub/jcp/persistence-2.0-fr-eval-oth-JSpec/persistence-2_0-final-spec.pdf列出了此功能。 Openjpa 2.1.1應該是JPA 2.0。 – 2011-12-14 13:09:13

7

您可以將JPA Concat函數用於多個字符串。

例如:本說明書的

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

檢查。我用openjpa得到一個異常。鏈接的引用(http://docs.oracle.com/cd/E16764_01/apirefs.1111/e13946/ejb3_langref.html#ejb3_langref_string_fun)也只顯示了兩個參數。 – 2011-12-14 12:49:51

6

您還可以使用||作爲連接操作符,見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 
相關問題