【发布时间】: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