2010-12-14 43 views
0

Me travaillant au printemps hiberner
J'ai une colonne dans ma table de base de données, celle du type VARCHAR, mais elle stocke la valeur entière. Donc, si sort il utilise sql ou hql ou Criteria(Order.asc), tous le trient comme une chaîne. J'ai besoin qu'il soit trié en tant que valeur entière qu'il stocke. Ici je ne peux pas changer ma table.
Y at-il de toute façon de le trier en entier en utilisant Criteria
Est-ce que la seule solution pour moi est, après l'avoir lu dans une liste et trier dans mon service?Trier la table par valeur entière stockée dans le champ VARCHAR

Modifié: moi en utilisant MYSQL

Merci

+1

Vous pouvez convertir la chaîne en int dans votre base de données, en fonction de votre base de données. Pour Mysql (par exemple) vous avez 'convert()' et 'cast()' – cristian

+0

dans quelle base de données? –

Répondre

1

Vous pouvez essayer de le jeter avant de les trier. Dans mysql, quelque chose comme ceci:

SELECT CAST(myVarcharField AS DECIMAL(10)) as myIntField order by myIntField; 

ou un entier non signé:

SELECT CAST(myVarcharField AS UNSIGNED) as myIntField order by myIntField; 

fonte semble être un HQL expression valide aussi.

+0

Cette requête ressemble à sql natif, est-ce possible aussi dans HQL ou Criteria? – Ralph

+0

Il est natif mySQL. La question spécifie explicitement qu'elle ne devrait pas l'être. – Joel

+0

Merci pour votre réexécution. N'importe quelle manière d'employer ceci avec des critères? –

0

SQL:

SELECT CAST(t.order AS UNSIGNED INTEGER) AS intOrder 
    FROM myTable t ORDER BY intOrder ASC 
+0

Merci pour votre replay. N'importe quelle manière d'employer ceci avec des critères? –