JPA将STRING列值连接成单个值,就像聚合函数一样

时间:2014-05-07 14:48:53

标签: jpa

使用JPA是否可以使用自定义聚合函数来扩展concat(),以便将列值连接成单个字符串?

1 个答案:

答案 0 :(得分:3)

我最近遇到了与JPA和H2数据库相同的问题。我试图通过函数调用(见下文)从JPQL调用GROUP_CONCAT函数但没有成功。最后,我使用了原生查询电话

但是,JPA 2.1 specifications提到您可以调用(函数调用)预定义或用户定义的数据库函数标量或聚合函数。此后我通过 突出显示 相关部分再次通过说明中的段落。

  

4.6.17.3调用预定义和用户定义的数据库函数

     

通过function_invocation语法支持调用Java Persistence查询语言的内置函数以外的函数。这包括调用预定义的数据库函数和用户定义的数据库函数。

 function_invocation::= FUNCTION(function_name {, function_arg}*)
 function_arg ::=
         literal |
         state_valued_path_expression |
         input_parameter |
         scalar_expression
     

function_name参数是一个字符串,表示要调用的数据库函数。参数必须适合于要调用的数据库函数。函数的结果必须适合于调用上下文。

     

该功能可以是数据库定义的功能或用户定义的功能。 该函数可以是标量函数或聚合函数

     

使用function_invocation语法的应用程序无法跨数据库移植。

     

示例:

SELECT c
FROM Customer c
WHERE FUNCTION(‘hasGoodCredit’, c.balance, c.creditLimit)

参考:Java Persistence 2.1, Final Release