我尝试用这个的HQL查询:Hibernate异常。 QuerySyntaxException:意外的标记:HAVING
Result.find("SELECT c, (3959 * acos(cos(radians(?)) * "+
"cos(radians(c.latitude)) *"+
"cos(radians(c.longitude) - radians(?)) +"+
"sin(radians(?)) * sin(radians(c.latitude)))) " +
"AS distance FROM City c HAVING distance < ? ORDER BY distance ASC",
latitude, longitude, latitude, radius).fetch();
但结果:
IllegalArgumentException occured : org.hibernate.hql.ast.QuerySyntaxException: unexpected token: HAVING near line 1, column 204 [SELECT c, (3959 * acos(cos(radians(?)) * cos(radians(c.latitude)) *cos(radians(c.longitude) - radians(?)) +sin(radians(?)) * sin(radians(c.latitude)))) AS distance FROM models.City c HAVING distance < ? ORDER BY distance ASC]
现在''where'子句'中'未知列的距离' – 2012-04-12 06:35:57
'distance'是列的别名,你必须把整个计算放在select中,也放在where子句中。而不是列别名 – Vikram 2012-04-12 06:38:22
但是我无法对城市列表进行排序。 – 2012-04-12 06:41:02