J'ai la requête suivante et j'ai eu une liste avec le type de données Double. Dans cette requête, j'ai comme paramètre la longitude et la latitude d'un emplacement spécifique et aussi la distance. Avec le paramètre "distance", je peux sélectionner la plage entre les différents emplacements.HQL, SQL - Obtenir l'objet entier (Get distance)
Mon problème est maintenant, je voudrais obtenir un ensemble "City" - objets dans ma liste de résultats et pas seulement une liste de la distance de différenciation (double). Comment est-ce que je devrais modifier que j'ai reçu une liste de mon entité "City" et pas seulement Floats?
public List<Double> findCityAroundSelectedCity(double longitude, double latitude, float distance) {
String queryString = "SELECT (6371 * acos (cos(radians(" + latitude
+ ")) * cos(radians(latitude)) * cos(radians(longitude) - radians(" + longitude + ")) + sin(radians("
+ latitude + ")) * sin(radians(latitude)))) AS distance FROM City c HAVING distance < " + distance
+ " ORDER BY distance";
Query query = entityManager.createNativeQuery(queryString);
List<Double> list = null;
list = query.getResultList();
return list;
}
Merci beaucoup pour toute l'aide
Merci beaucoup !!! Une question - comment puis-je exclure la ville source? – CommanderHP
Ajoutez un identifiant unique aux paramètres, (à la fois la méthode et la requête,) et 'id <>: id' à la clause' WHERE' ... –
Vous pouvez "améliorer" ceci en utilisant cet identifiant unique et la distance , et obtenir des valeurs longues/lat de la table elle-même, par l'ID ... –