当使用JPA的查询语句进行查询时:
Select 子句允许列表与聚合函数同时使用,比如:
Select DISTINCT bpp.name, COUNT(app) From Bpp bpp, IN(bpp.apps) app GROUP BY bpp.name HAVING COUNT(app) >= 10
但有限制,被聚合的内容一定是与其他查询的内容是并列关系的,比如上例中:
bpp.name是Bpp实体的属性,并且 apps 一定也是Bpp实体的属性之一(实体关联的集合属性)。
经过聚合函数,一定能够计算出一个数值来,这个数值将被看作是与bpp.name 内容并列的。
另外,必须加入GROUP BY子句,用于说明根据实体那个字段进行分组聚合,这样有些聚合就不再进行,这个字段通常都是返回的列表结果字段之一;等同于,先进行查询实体的列表,然后从得到的列表中提取需要返回的字段,在提取同时计算需要聚和的属性(比如实体某集合的总尺寸)
HAVING子句对聚合进一步限制:
Select ... [GROUP BY ... [HAVING ...]] 这三个是配合来使用的