2009-11-30 2 views
0

J'ai découvert la fonction PARSENAME comme un bon choix pour commander l'adresse IP stockée dans la base de données. Here il y a un exemple.
Mon problème est que je utilise Hibernate avec des requêtes nommées dans un fichier de mappage XML et j'essaie d'éviter l'utilisation deHQL équivalent 'parsename'

session.createSQLQuery(..) 
fonction

.
Je me demande s'il existe une fonction équivalente PARSENAME pour les requêtes HQL. Je le cherche et je ne trouve rien.
Merci beaucoup.

Répondre

1

Je n'ai rien trouvé de lié.
Enfin, j'exécuté l'ordre suivant par la clause de commander les adresses IP de manière numérique (j'ai trouvé la solution here):

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)  
0

Sous votre dialecte et utiliser RegisterFunction() pour faire ParseName disponibles aux requêtes HQL. RegisterFunction n'est pas très bien documenté mais il y a plenty of examples on the web. Je ne suis pas sûr que vous pouvez l'utiliser pour commander résultats si.