【问题标题】:Doing computation in GORM criteria query在 GORM 标准查询中进行计算
【发布时间】:2012-03-08 15:00:17
【问题描述】:

这是基本领域类

Location {
  double lat;
  double lng
}

我想将此查询转换为 GORM 表单

SELECT name, lat, lng, SQRT(
    POW(69.1 * (lat -  LAT1), 2) +
    POW(69.1 * (LNG1- lng) * COS(lat / 57.3), 2)) AS distance
FROM location ORDER BY distance;

【问题讨论】:

    标签: hibernate grails criteria grails-orm


    【解决方案1】:

    您可以运行 HQL 查询,使用 executeQuery 选择单个列:

        def results= location.executeQuery('SELECT name, lat, lng, SQRT(
        POW(69.1 * (lat -  LAT1), 2) +
        POW(69.1 * (LNG1- lng) * COS(lat / 57.3), 2)) AS distance
        FROM location ORDER BY distance')
    

    这将返回一个 Object[] 列表,例如

    for (row in results) {
       String name= row[0]
       String lat= row[1]
       ...
    }
    

    【讨论】:

    • 我希望它以 GORM 形式使用 createCriteria
    • 您的查询显示没有按子句顺序找到distance 的列
    • 您需要将整个计算按子句排序,例如: order by SQRT( POW(69.1 * (lat - LAT1), 2) + POW(69.1 * (LNG1- lng) * COS(纬度 / 57.3), 2))
    猜你喜欢
    • 1970-01-01
    • 2014-11-10
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    相关资源
    最近更新 更多