您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在多个列上计算不同

如何在多个列上计算不同

这是一个较晚的答案:-)尽管我不确定情况是否有所改变。

最近,我遇到了非常相同的需求,并使用concat解决了该需求,即通过将列连接为 ,然后countDistinct将其连接到 上。

但是我不能使用,criteriaBuilder.concat因为它生成||用于串联的JPQL ,而Hibernate遇到了麻烦。

幸运的是@Formula,因此,我将伪列映射到具有以下内容的字段@Formula

@Entity
public class MyEntity {
  @Column(name="col_a")
  private String colA;

  @Column(name="col_b")
  private String colB;

  @Formula("concat(col_a, col_b)") // <= THE TRICK
  private String concated;
}

这样,我终于可以将concated字段用于CriteriaBuilder.countDistinct

//...
Expression<?> exp = criteriaBuilder.countDistinct(entity.get("concated"));
criteriaQuery.select(exp);

TypedQuery<Long> query = entityManager.createQuery(criteriaQuery);
return query.getSingleResult();

我希望JPA将(或希望已经)支持countDistinct多列,这样就可以避免所有这些混乱情况。

其他 2022/1/1 18:14:00 有709人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶