у меня в настоящее время ниже критерии: -Hibernate Критерии - Сортировать по
Criteria addr = criteria.createCriteria("location.address");
addr.add((Restrictions.and(Restrictions.between("latitude", latmin,
latmax), Restrictions.between("longitude", truelongmin, truelongmax))));
String sql = "SQRT(POW(69.1 * ({alias}.latitude - " + point[1]
+") , 2) + POW(69.1 * ("+point[0] +" - {alias}.longitude) * COS({alias}.latitude /"
+" 57.3) , 2)) < "+distance;
addr.add(Restrictions.sqlRestriction(sql));
То, что я хотел бы сделать в идеале, чтобы иметь возможность сделать заказ на расстояние. MySql эквивалент существо: -
SELECT * , (
SQRT(POW(69.1 * (latitude - 51.3814282) , 2) + POW(69.1 * (- 2.3574537 - longitude) * COS(latitude/57.3) , 2))
) AS distance
FROM `address`
WHERE (
SQRT(POW(69.1 * (latitude - 51.3814282) , 2) + POW(69.1 * (- 2.3574537 - longitude) * COS(latitude/57.3) , 2))
) < 10.0
ORDER BY distance DESC
LIMIT 0 , 30
Что такое лучший способ сделать это в Hibernate? Я пробовал createCriteria/createAlias («расстояние», «функция»)
В идеале я хотел бы сделать это сообщение ограничением на Latmin и Latmax, поскольку это снижает набор результатов и, следовательно, число вычислений (также sql делает тот же расчет дважды: S), однако любые предложения были бы наиболее оценены.
Приветствия, Роб