Question

J'utilise Hibernate dans une application Storefinder. Pour la recherche de proximité dans SQL J'utilise la formule de Haversine. Parce que c'est un peu en désordre SQL j'ai créé une requête SQL nommée dans mon dossier .hbm.xml pour cela.

SELECT
    location.*,
    ( 3959 * acos( cos( radians(7.4481481) ) * 
      cos( radians( X(location.coordinates) ) ) *
      cos( radians( Y(location.coordinates) ) - radians(46.9479986) ) +
      sin( radians(7.4481481) ) * sin( radians( X(location.coordinates) ) ) ) )
    AS distance     
FROM
    location        
WHERE
    location.coordinates IS NOT NULL
HAVING
    distance < :radius
ORDER BY
    distance ASC
LIMIT :max

Mais j'ai aussi un filtre défini par l'utilisateur (horaires d'ouverture, les assortiments, etc.). Pour cela, j'utilise des critères Hibernate pour ajouter des filtres programatically.

Maintenant, je suis un NamedQuery fonctionne parfaitement me donner tous les lieux autour d'un point et un critère de travail parfaitement QUERY me donner tous les emplacements selon certains filtre.

Ma question est: Quelle est la meilleure façon de combiner Hibernate ces deux bêtes? (À savoir que je dois tous les emplacements autour d'un point satisfaisant un certain filtre.) Est-il par exemple un moyen d'utiliser un NamedQuery comme sous-requête dans un critère de recherche?

Était-ce utile?

La solution

  

Quelle est la meilleure façon de combiner Hibernate ces deux bêtes?

A ma connaissance, ce n'est pas possible. Donc, soit tout écriture à l'aide d'une requête de critères (je ne sais pas personnellement comment faire ce que vous demandez) ou calculer une chaîne HQL de dynamique.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top