【发布时间】:2015-03-15 08:08:34
【问题描述】:
我可以使用 -
找到距离String hqlQuery = "SELECT *, (6371 * 2 * ASIN(SQRT(POWER(SIN((:ulatitude - abs(phy_1)) * pi()/180 / 2),2) +" +
"COS(:ulatitude * pi()/180 ) * COS(abs(phy_1) * pi()/180) *" +
"POWER(SIN((:ulongitude - phy_2) * pi()/180 / 2), 2)))) as d " +
"FROM location l HAVING distance < 10 ORDER BY d";
Query query = getSession().createSQLQuery(hqlQuery);
query.setParameter("ulatitude", latitude);
query.setParameter("ulongitude", longitude);
return query.list();
问题是我的模型不包含作为字段的距离。而且我无法弄清楚-
1.如何将其更改为适当的 HQL 而不是使用 SQL 查询。
2.如何返回这个附加参数距离d,因为距离不是我模型中location的字段。
我试过了 -
String hql = "from location where (SELECT (6371 * 2 * ASIN(SQRT(POWER(SIN((:ulatitude - abs(phy_1)) * pi()/180 / 2),2) +" +
"COS(:ulatitude * pi()/180 ) * COS(abs(phy_1) * pi()/180) *" +
"POWER(SIN((:ulongitude - phy_2) * pi()/180 / 2), 2))))) < 10";
Query query = getSession().createQuery(hql);
但它给出了以下错误-
org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected end of subtree
【问题讨论】:
标签: hibernate spring-mvc hql