java - JPA Criteria 使用 SUM 和 Group By 查询新列

标签 java mysql hibernate jpa criteria-api

我正在尝试使用像这样的 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/

相关文章:

Java JPA/Hibernate级联删除

java - 交易在 Jetty 中不及时持久化

java - ORA-01792 : maximum number of columns in a table or view is 1000

java - Android - 从下到上逐渐显示图像

java - 是否应该将 mvnw 文件添加到存储库中?

java - 通过java泛型动态返回类型

mysql - mysql 查询突然激增后 https 请求变慢

java - 如何用不同的方法从子类关闭 JFrame?

MYSQL 包括列 w。计数为 0

java - 错误消息 : Exception in thread "main" org. hibernate.HibernateException:访问 stax 流时出错