entitymanager:查询不保留min和max

时间:2014-11-28 15:09:23

标签: java sql aggregate-functions jpql entitymanager

上下文:Netbeans 8.0.1,JSF 2.2,Primefaces 5.0,JDK 1.7,eclipseLink 2.5.2

似乎查询不保留min和max: 这是我的jpql语句:

Query query = em.createQuery("SELECT po.customerId.customerId, MAX(po.shippingCost), 
MIN(po.shippingCost), COUNT(po.orderNum) countligne, 
COUNT(DISTINCT po.productId.productId)\n"   
+"FROM PurchaseOrder po WHERE po.customerId.customerId = :Id
  GROUP BY` po.customerId.customerId");

这是eclipselink logging sql:

SELECT t0.CUSTOMER_ID, COUNT(t1.ORDER_NUM), COUNT(DISTINCT(t2.PRODUCT_ID)) 
FROM CUSTOMER t0, PRODUCT  t2, PURCHASE_ORDER t1 WHERE ((t1.CUSTOMER_ID = ?) 
AND ((t0.CUSTOMER_ID = t1.CUSTOMER_ID) AND (t2.PRODUCT_ID = t1.PRODUCT_ID)))
GROUP BY t0.CUSTOMER_ID

出了什么问题?

1 个答案:

答案 0 :(得分:1)

似乎计数字段别名扰乱了eclipselink,导致结果列列表不准确:

..., COUNT(po.orderNum) countligne, ...

当我压制' countline'别名,每件事情都很完美。

最奇怪的是,当没有渲染聚合字段时,没有任何错误,甚至是警告。

相关问题