我正在尝试使用像这样的 SQL 的条件查询创建一个新的计算 col:
SELECT *, SUM(quantity) + SUM(pledged) as total, SUM(pledged) as pledged FROM stock_position GROUP BY partner_id, product_id
我需要获取此结果并将其设置为另一个实体,因此我需要使用别名 Total 并映射到实体。但我找不到办法做到这一点。我尝试了下面的代码。
final CriteriaQuery<Stock> query = getCriteriaBuilder().createQuery(Stock.class);
final Root<StockPosition> root = query.from(StockPosition.class);
Expression<Double> quantity = getCriteriaBuilder().sum(root.<Double> get("quantity"));
Expression<Double> pledged = getCriteriaBuilder().sum(root.<Double>get("pledged"));
Expression<Double> total = getCriteriaBuilder().sum(quantity, pledged);
query.select(total); //THIS GIVES ME ERROR
query.groupBy(root.get("partner"), root.get("product"));
当然类型不同,但我不知道如何映射。有人可以帮忙吗?
谢谢
最佳答案
简单:您想要对一些值求和,但查询需要 Stock
类的实体。
正确的声明如下:
final CriteriaQuery<Double> query = getCriteriaBuilder().createQuery(Double.class);
关于java - JPA Criteria 使用 SUM 和 Group By 查询新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30222296/