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")))