Hibernate 在GORM标准查询中进行计算

Hibernate 在GORM标准查询中进行计算,hibernate,grails,criteria,gorm,Hibernate,Grails,Criteria,Gorm,这是基本的域类 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; 可以使用executeQuery运行选择单个列的H

这是基本的域类

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;

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

    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')
这将返回对象[]的列表,例如

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

我希望使用
createCriteria
以GORM形式显示它,也许这将有助于您的查询按条款顺序显示未找到任何列
distance
。您需要将整个计算按以下子句顺序排列:order by SQRT(POW(69.1*(lat-LAT1),2)+POW(69.1*(LNG1-lng)*COS(lat 57.3),2))