使用JPA是否可以使用自定义聚合函数来扩展concat(),以便将列值连接成单个字符串?
答案 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)