Domanda

Io uso Hibernate in un'applicazione Storefinder. Per la ricerca di prossimità in SQL Io uso la formula haversine. Perché questo è un po 'disordinato SQL ho creato una query SQL di nome nel mio file .hbm.xml per questo.

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

Ma anche avere un filtro definito dall'utente (orari di apertura, assortimenti, ecc). Per questo io uso i criteri di Hibernate per aggiungere programatically filtri.

Ora ho un NamedQuery perfettamente funzionante dandomi tutte le località in tutto un certo punto e un criterio perfettamente funzionanti mi interrogare dando tutte le sedi secondo alcuni filtri.

La mia domanda è: Qual è il modo migliore in Hibernate di combinare queste due bestie? (Vale a dire ho bisogno di tutte le località in tutto un certo punto che soddisfano alcuni filtri.) C'è ad esempio un modo per utilizzare un NamedQuery come sottoquery in un criterio di ricerca?

È stato utile?

Soluzione

  

Qual è il modo migliore in Hibernate di combinare queste due bestie?

A mia conoscenza, che non è possibile. Quindi, o tutto in scrittura utilizzando una query Criteria (io personalmente non so come fare quello che stai chiedendo) oppure calcolare una stringa di dinamica HQL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top