JPQLのHAVING句

The HAVING clause must specify search conditions over the grouping items or aggregate functions that apply to grouping items.

ドキュメントに上のようにあるのですが、JPQLのHAVING句ってなんだか制限がきついですね。
下の3つのJPQL(それぞれHAVING句のあたりだけ微妙に違う)ですが、正しいのは 1)だけで 2) と 3) は構文的に正しくないようです。
Hibernateはまぁどれも許してくれるのですが、TopLinkだと 2) と 3) は怒られます。

■1)JPQL的に正しい。HibernateでもTopLinkでもOK

SELECT e.weight, COUNT(e) FROM Employee AS e 
GROUP BY e.weight 
HAVING (COUNT(e.weight) > 1) 
ORDER BY e.weight



■2)JPQL的に正しくないっぽい。HibernateではOK、TopLinkではNG

SELECT e.weight, COUNT(e) FROM Employee AS e
GROUP BY e.weight 
HAVING (COUNT(e) > 1) 
ORDER BY e.weight

SELECT句では指定できるCOUNT(e)がそのままHAVING句で使えないのです。感覚的ではないですね。

■3)JPQL的に正しくないっぽい。HibernateではOK、TopLinkではNG

SELECT e.weight, COUNT(e) FROM Employee AS e 
GROUP BY e.weight 
HAVING (COUNT(e.height) > 1) 
ORDER BY e.weight

SQLではGROUP BY句に指定した以外のカラムを使った集計関数をHAVING句で使うことって普通にあると思いますが、JPQLでは駄目みたいです。