Java entitymanager:查询不保留最小值和最大值
上下文:Netbeans 8.0.1、JSF2.2、Primefaces 5.0、JDK1.7、eclipseLink 2.5.2 查询似乎不保留最小值和最大值: 以下是我的jpql声明:Java entitymanager:查询不保留最小值和最大值,java,sql,aggregate-functions,jpql,entitymanager,Java,Sql,Aggregate Functions,Jpql,Entitymanager,上下文:Netbeans 8.0.1、JSF2.2、Primefaces 5.0、JDK1.7、eclipseLink 2.5.2 查询似乎不保留最小值和最大值: 以下是我的jpql声明: Query query = em.createQuery("SELECT po.customerId.customerId, MAX(po.shippingCost), MIN(po.shippingCost), COUNT(po.orderNum) countligne, COUNT(DISTINCT
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日志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
怎么了?似乎计数字段别名扰乱了eclipselink,导致结果列列表不准确:
..., COUNT(po.orderNum) countligne, ...
当我禁用“countline”别名时,一切都会完美工作
最奇怪的是,没有呈现聚合字段时,没有任何错误,甚至没有警告。非常有趣,听起来像个bug。