JPA中的SUM的MAX

时间:2015-10-26 11:20:32

标签: java hibernate jpa

我正在使用JPA而且我一直坚持查询。我的系统上有消费者类,它有多对一关系的订单,一个消费者可以有多个订单或任何订单,订单必须有消费者强制性。 Order有一个名为totalPrice的属性,它是订单的总金额。

我正在尝试取消花费更多钱的消费者。我需要做他们的订单总和然后是最大值,所以首先,我试过这个以获得最大值:

select max(sum(o.totalPrice)) from Order o group by Order.consumer

但JPA不支持max(sum(...另外,它不支持FROM子句或“LIMIT”子句的任何子查询。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您要求进行两级分组。首先,您计算每个消费者的总和,然后您希望最大化所有消费者。最简单的方法是在sql语句中计算每个使用者的总和,然后按总和排序并检索第一行。

但是请注意,如果你有很多消费者和订单(在现实生活系统中我认为你有),这样的选择语句总是对消费者和订单进行全表扫描。通常这对性能至关重要。也许它可以通过某个计时器工作或每当您输入新订单时预先计算其自己的实体(报告实体)中的总和。

答案 1 :(得分:0)

由我自己解决。我用过#34; ALL"运营商。感谢。