【发布时间】:2014-10-17 15:44:44
【问题描述】:
我正在使用CriteriaBuilder.concat 连接 2 个字符串,使用以下代码:
Expression<String> concat = criteriaBuilder.concat(expr1, expr2)
但是生成的 SQL 是这样的:
select distinct col_1 || col_2
导致org.hibernate.hql.ast.QuerySyntaxException:
expecting CLOSE, found '||' near line 1, column 48 [
select count(distinct generatedAlias0.hostname || generatedAlias0.device) from ...
^(1,48)
我想知道如何强制它生成以下使用concat() 函数而不是|| 运算符的SQL?
select distinct concat(col_1, col_2)
更新:
从错误中我们可以看出问题更多在 Hibernate (v3.6.10.Final) 方面,这就是为什么让 MySQL 接受|| 进行连接没有帮助,更新到新版本也不是我的选择。
谢谢
【问题讨论】:
-
Hibernate 应该使用适合您数据库的方言将条件转换为 SQL。也许您已将其配置为使用 Oracle 方言而不是 MySQL 方言。发布您的 JPA/Hibernate 配置。
-
我检查了配置,我使用play1,默认使用driver specific dialect,对于MySQL,方言是org.hibernate.dialect.MySQLInnoDBDialect的子类。
-
^ 更新上述评论中的链接以获得正确的分支/版本:driver specific dialect,它扩展了 org.hibernate.dialect.MySQLInnoDBDialect。