Grails gorm标准为经度,纬度和距离

时间:2014-02-16 02:17:44

标签: mysql sql hibernate gorm criteria

我需要按距离排序的某个人的人。人员表具有每个人的地址以及经度和纬度字段。我试着用Criteria和createCriteria没有运气。

以下查询通过它返回具有距离值的人。

def query = "from Person as person where SQRT(POW((69.1 * (latitude - ${myPersonLat})) , 2 ) + POW((53 * (longitude - ${myPersonLng})), 2)) < 30"
def results = Person.executeQuery(query)

而不是那样,我需要让所有来自db的人按距离排序。

非常感谢任何有关创建GORM标准的帮助。

1 个答案:

答案 0 :(得分:0)

嘿,我不确定确切的语法,但你可以尝试类似的东西:

String query = """
from Person as person 
where SQRT(POW((69.1 * (latitude - ${myPersonLat})) , 2 ) + POW((53 * (longitude - ${myPersonLng})), 2)) < 30
order by (POW((69.1 * (latitude - ${myPersonLat})) , 2 ) + POW((53 * (longitude - ${myPersonLng})), 2))
"""

或者,您可以在select / join中命名子查询,然后在上面的两个位置使用它,以减少一些代码重复。不幸的是我离开了我的开发机器,所以我无法测试它。 This HQL doc可能会有所帮助。