Domanda

Ho scoperto la funzione PARSENAME come una buona scelta per ordinare l'indirizzo IP memorizzato nel database. Qui c'è un esempio.
Il mio problema è che sto utilizzando Hibernate con query denominate in un file di mapping xml e sto cercando di evitare l'uso di

session.createSQLQuery(..) 

funzione.
Mi chiedo se esiste una funzione equivalente PARSENAME per le query HQL. Lo sto cercando e non riesco a trovare nulla.
Mille grazie.

È stato utile?

Soluzione

Non ho trovato nulla di correlato.
Alla fine ho eseguito la seguente clausola ORDER BY per ordinare gli indirizzi IP in modo numerico (ho trovato la soluzione qui ):

order by cast(substring(host.ip, 1, locate('.', host.ip) - 1) as integer),
                 cast(substring(host.ip, locate('.', host.ip) + 1, locate('.', host.ip, locate('.', host.ip) + 1) - locate('.', host.ip) - 1) as integer),
                 cast(substring(host.ip, locate('.', host.ip, locate('.', host.ip) + 1) + 1, locate('.', host.ip, locate('.', host.ip, locate('.', host.ip) + 1) + 1) - locate('.', host.ip, locate('.', host.ip) +  1) - 1) as integer),
                 cast(substring(host.ip, locate('.', host.ip, locate('.', host.ip, locate('.', host.ip) + 1) + 1) + 1, 3) as integer)    

Altri suggerimenti

Sottoclassa il dialetto e usa RegisterFunction () per rendere PARSENAME disponibile per le query HQL. RegisterFunction non è ben documentato ma ci sono molti esempi sul web . Non sono sicuro che puoi usarlo per ordinare i risultati.

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