我需要帮助才能使用JDO执行此查询:
SELECT id, ( 3959 * acos( cos( radians(lat_t) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(lng_t) )
+ sin( radians(lat_t) ) * sin( radians( lat ) ) ) ) AS distance
FROM Stores HAVING distance < 25
ORDER BY distance我试着参考附近的坐标,在互联网上搜索了很多次,我找到了这个算法Haversine。The source is Google。
这就是你所需要的:
public static ArrayList<User> getUsers(double lat, double lng, double distance) {
PersistenceManager pm = PMF.get().getPersistenceManager();
Query query = pm.newQuery(¿?¿?¿?);
...
return users;
}谢谢!
发布于 2013-03-21 19:44:38
来自:http://db.apache.org/jdo/jdoql_methods.html
When writing the "filter" for a JDOQL Query you can make use of some methods on the various Java
types. The range of methods included as standard in JDOQL is not as flexible as with the true Java
types, but the ones that are available are typically of much use.您应该查找您的值,并对这些值应用所需的任何方法。
对于排序部分,Query接口有一个名为setOrdering的方法,传递给它yourColumn ASC|DESC (即ASC或DESC)
https://stackoverflow.com/questions/15283566
复制相似问题