【问题标题】:getting sum of a column using CriteriaBuilder使用 CriteriaBuilder 获取列的总和
【发布时间】:2016-08-18 10:33:10
【问题描述】:

我正在尝试使用标准(Criteria Builder 和 CriteriaQuery)获取金额总和

但是我在编写代码时遇到了错误; 这是我的代码

    public Long findAmountByCriteria(OrderCriteria orderCriteria) {

  final CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
  final CriteriaQuery<BigDecimal> query = criteriaBuilder.createQuery(BigDecimal.class);
  Root<Order> root = query.from(Order.class);

  query.select(criteriaBuilder.sum(root.get("amount")))
  .where(buildPredicateForOrderResponseCriteria(criteriaBuilder, orderCriteria, root));

  final TypedQuery<BigDecimal> typedQuery = entityManager.createQuery(query);
  return typedQuery.getSingleResult().longValue();
}

金额为 BigDecimal 值。

在选择方法中它说,

The method select(Selection<? extends BigDecimal>) in the type CriteriaQuery<BigDecimal> is not applicable for the arguments (Expression<Object>)

求和法

Bound mismatch: The generic method sum(Expression<N>) of type CriteriaBuilder is not applicable for the arguments (Path<Object>). The inferred type Object is not a valid substitute for the bounded parameter <N extends Number>

我该如何解决这个问题。

【问题讨论】:

    标签: java jpa criteria criteria-api


    【解决方案1】:

    而不是你在做什么

    query.select(criteriaBuilder.sum(root.get("amount"))) 
    

    尝试这样做

    query.select(criteriaBuilder.sum(root.<BigDecimal> get("amount")))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-01
      相关资源
      最近更新 更多