Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用CriteriaBuilder获取列的和_Java_Jpa_Criteria_Criteria Api - Fatal编程技术网

Java 使用CriteriaBuilder获取列的和

Java 使用CriteriaBuilder获取列的和,java,jpa,criteria,criteria-api,Java,Jpa,Criteria,Criteria Api,我尝试使用条件(条件生成器和条件查询)获取金额的总和 但是我在编写代码时遇到了一个错误; 这是我的密码 public Long findAmountByCriteria(OrderCriteria orderCriteria) { final CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); final CriteriaQuery<BigDecimal> query = cri

我尝试使用条件(条件生成器和条件查询)获取金额的总和

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

    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();
}
公共长findAmountByCriteria(OrderCriteria OrderCriteria){
final CriteriaBuilder CriteriaBuilder=entityManager.getCriteriaBuilder();
final-CriteriaQuery=criteriaBuilder.createQuery(BigDecimal.class);
Root=query.from(Order.class);
query.select(criteriaBuilder.sum(root.get(“amount”))
.where(buildPredicateForderResponseCriteria(criteriaBuilder,orderCriteria,root));
最终类型查询类型查询=entityManager.createQuery(查询);
返回typedQuery.getSingleResult().longValue();
}
金额是一个大的十进制值

在选择方法中,它说

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

方法选择(选择而不是您正在做的事情

query.select(criteriaBuilder.sum(root.get("amount"))) 
试着这样做

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