- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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接受||
的原因串联没有帮助,更新到较新版本对我来说也不是一个选择。
谢谢
最佳答案
我实际上找到了解决方法。通过使用 @Formula
(来自 Hibernate)而不是 CriteriaBuilder
来完成相同的任务,如下所示:
@Entity
public class MyEntity {
@Column(name="col_a")
private String colA;
@Column(name="col_b")
private String colB;
@Formula("concat(col_a, col_b)")
private String concated;
//...
}
这样我就可以为 CriteriaBuilder.countDistinct
使用 concated
字段:
//...
Expression<?> exp = criteriaBuilder.countDistinct(entity.get("concated"));
criteriaQuery.select(exp);
TypedQuery<Long> query = entityManager.createQuery(criteriaQuery);
return query.getSingleResult();
我希望 JPA 能够(或者希望已经)支持具有多个列的 countDistinct
,那么所有这些困惑都可以避免(参见:How to countDistinct on multiple columns,答案是NO).
关于java - JPA CriterialBuilder.concat 强制使用 concat 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25469858/
我正在使用 CriteriaBuilder.concat 连接 2 个字符串,代码如下: Expression concat = criteriaBuilder.concat(expr1, expr2
这是存储库 @Repository public interface DocumentRepository extends JpaRepository, JpaSpecificationExecuto
我是一名优秀的程序员,十分优秀!