【问题标题】:Grails gorm criteria for longitude, latitude and distanceGrails gorm 经度、纬度和距离的标准
【发布时间】:2014-03-15 09:54:58
【问题描述】:

我需要按距离排序的给定 Person 的人。人员表具有每个人的地址以及经度和纬度字段。我尝试了 withCriteria 和 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 标准的帮助。

【问题讨论】:

    标签: mysql sql hibernate grails-orm criteria


    【解决方案1】:

    嘿,我不确定确切的语法,但您可以尝试以下方法:

    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 文档可能会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-16
      • 2016-02-03
      • 2012-02-10
      相关资源
      最近更新 更多