【问题标题】:aggregates in jpa criteria apijpa 标准 api 中的聚合
【发布时间】:2017-03-15 19:15:24
【问题描述】:

如何使用 jpa 标准 api 进行这样的查询:

select a.c1, sum(b.c1) from a join b on a.c0 = b.c0 ....

我试着做这样的事情:

public static Specification<OrderEntity> x(String orderId) {
    return (root, query, cb) -> {

        Root<OrderItemEntity> itemRoot = query.from(OrderItemEntity.class);

        query.multiselect(root.get(OrderEntity_.orderNo), cb.sum(itemRoot.get(OrderItemEntity_.quantity)));

        return cb.equal(root.get(OrderEntity_.orderNo), orderId);
    };
}

OrderEntity 是第一个表,OrderItemEntity 是第二个表。我想从 OrderEntity 表中检索一些列,并从 OrderItemEntity 表中检索一些列的聚合。上述规范会产生如下所示的查询:

select order.orderNo from order join order_item on ...

因此 OrderItemEntity 表已连接,但聚合列未包含在查询中。

【问题讨论】:

  • Spring 没有“Criteria API”。 JPA API 有一个 Criteria API。帖子标题固定

标签: hibernate jpa aggregate criteria-api


【解决方案1】:

尝试创建一个连接并从中访问列:

Join<OrderEntity, OrderItemEntity> itemJoin = root.join(OrderEntity_.your_join_column);

query.multiselect(root.get(OrderEntity_.orderNo), cb.sum(itemJoin.get(OrderItemEntity_.quantity)));

return cb.equal(root.get(OrderEntity_.orderNo), orderId);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 2011-05-04
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多