我有这些类/实体:
class Item {
int id;
String name;
}
class Sale {
Item item;
double value;
}
如何使用查询DSL获取按项目分组的销售总额?
我可以运行此查询:
QSale sale = QSale.sale;
QItem item = QItem.item;
from(sale).join(sale.item, item).groupBy(item).list(item.id, sale.value.sum())
但是这只返回项目ID及其总和,但是如何获取整个Item对象及其总和?
如果我将查询写为:
from(sale).join(sale.item, item).groupBy(item).list(item, sale.value.sum())
我会得到:
列'Item.name'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。
答案 0 :(得分:0)
这应该有效
QSale sale = QSale.sale;
QItem item = QItem.item;
query.from(sale)
.join(sale.item, item)
.list(item.id, sale.value.sum())
.transform(GroupBy.groupBy(item).as(GroupBy.sum(sale.value)))
GroupBy
从groupBy
结束的地方开始。它通过结果后处理http://www.querydsl.com/static/querydsl/3.6.2/reference/html/ch03s02.html#d0e2185