JPA 连接运算符
Posted
技术标签:
【中文标题】JPA 连接运算符【英文标题】:JPA concat operator 【发布时间】:2012-01-20 05:25:39 【问题描述】:是否有用于字符串连接的 ?
我知道有一个 JPA CONCAT
函数,但是它很难用于连接多个字符串。
CONCAT(CONCAT(CONCAT(cola,colb),colc),cold)
甲骨文等供应商提供||
,而微软等其他供应商则提供+
。是否有标准的 ,以便我可以创建类似的查询
cola || colb || colc || cold
我尝试使用带有 SQL Server 的 openjpa +
,但它似乎是无效的 JPQL。我在oracle reference 中找不到任何关于此类运算符的信息。
【问题讨论】:
【参考方案1】:CONCAT
函数在 JPA 2.0 中进行了扩展,允许传递超过 2 个参数,来自规范的第 4.6.17.2.1 节(字符串函数):
CONCAT(string_primary, string_primary , string_primary* )
在 JPA 1 中,这仅限于两个参数。
【讨论】:
嗯。奇怪的。 download.oracle.com/otn-pub/jcp/… 按照您的描述列出此功能。 Openjpa 2.1.1 应该是 JPA 2.0。 OpenJpa 2 应该支持这种语法,你能发布确切的查询和你收到的异常吗?【参考方案2】:您可以对多个字符串使用 JPA Concat 函数。
例如:
CONCAT(cola, colb, colc, cold)
【讨论】:
检查过了。我得到了openjpa的例外。我链接的参考文献 (docs.oracle.com/cd/E16764_01/apirefs.1111/e13946/…) 也只显示了两个参数。【参考方案3】:您也可以使用||
作为连接运算符,请参阅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
【讨论】:
以上是关于JPA 连接运算符的主要内容,如果未能解决你的问题,请参考以下文章
Spring JPA 中的 PostgreSQL 数组运算符
如何在 JPA 中使用 CONTAINS 而不是 LIKE 进行选择
如何在 SQL (JPA) 中使用带有 IN 运算符的嵌套 SELECT 语句?