我正在尝试使用标准查询创建一个新的计算col,如此SQL:
SELECT *, SUM(quantity) + SUM(pledged) as total, SUM(pledged) as pledged FROM stock_position GROUP BY partner_id, product_id
我需要获得此结果并设置为另一个实体,因此我需要使用别名total和map to entity。但我找不到办法做到这一点。我尝试了下面的代码。
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"));
当然类型不同,但我不知道如何映射。任何人都可以伸出援助之手?
由于
答案 0 :(得分:0)
简单:您想要总结一些值,但查询需要类Stock
的实体。
正确的声明如下:
final CriteriaQuery<Double> query = getCriteriaBuilder().createQuery(Double.class);