【发布时间】:2016-07-12 21:11:49
【问题描述】:
我正在尝试使用 Criteria 生成以下查询:
select order_number, order_date, sum(order_amount)
from st_pur_orders
group by ORDER_NUMBER,ORDER_DATE;
这是我的标准:
Criteria cr = session.createCriteria(StPurOrders.class);
cr.setProjection(Projections.projectionList()
.add(Projections.property("orderNumber"), "orderDate")
.add(Projections.sum("orderAmount"))
.add(Projections.groupProperty("orderNumber"))
.add(Projections.groupProperty("orderDate")));
cr.setResultTransformer(Transformers.aliasToBean(PurOrderColl.class));
list = cr.list();
但是在后台生成的查询是这样的:
select this_.ORDER_NUMBER as y0_, sum(this_.ORDER_AMOUNT) as y1_,
this_.ORDER_NUMBER as y2_, this_.ORDER_DATE as y3_
from STOCK.ST_PUR_ORDERS this_
group by this_.ORDER_NUMBER, this_.ORDER_DATE;
我的问题是为什么ORDER_NUMBER 字段被列出两次?
【问题讨论】:
-
您是否获得了正确的结果集,或者您的结果中实际上是否出现了重复数据?
-
我的结果中实际上出现了重复数据,因此我无法映射到 PurOrderColl 类,因为那里只有三个属性。
-
@ErrorNotFoundException 你的条件已经有
Projections.groupProperty("orderNumber")。我认为不需要Projections.property("orderNumber"),。能否请您删除它并尝试。 -
@MadhusudanaReddySunnapu 我实际上删除了它们,orderNumber 和 orderDate,现在我有了可以使用的东西:
select sum(this_.ORDER_AMOUNT) as y0_, this_.ORDER_NUMBER as y1_, this_.ORDER_DATE as y2_ from STOCK.ST_PUR_ORDERS this_ group by this_.ORDER_NUMBER, this_.ORDER_DATE
标签: java hibernate hibernate-criteria