Question

J'ai une table dans une base de données Oracle comme ceci

ID   | LABEL
------------
 1   |  label alpha 1
 2   |  label alpha 2
 3   |  label alpha a

quand je fais un select dans une application comme écureuil comme ceci:

select * FROM MA_TABLE order by LABEL asc

J'obtenir:

ID   | LABEL
------------
 1   |  label alpha 1
 2   |  label alpha 2
 3   |  label alpha a

ce qui est bien!

Quand je Faire la même demande à l'aide mybatis:

<select id="selectMaTable" resultMap="resultMap" >
  Select * FROM MA_TABLE order by LABEL asc
</select>

J'obtenir:

ID   | LABEL
------------
 3   |  label alpha a
 1   |  label alpha 1
 2   |  label alpha 2

Les caractères alphabétiques sont avant que les caractères numériques ... pourquoi ??

Merci d'avance,

Antoine

Ps: J'utilise org.mybatis: mybatis: jar: 3.0.5 et com.oracle:ojdbc6:jar:11.2.0.2.0 pour l'accès base de données

Edit: cette aide liée moi un peu aussi

Merci à la remarque de Soulcheck, je trouve que si je change l'ordre par la clause ORDER BY avec NLSSORT (ATL_SIT.ATL_SIT_LIB, 'NLS_SORT = BINARY'), il fonctionne ...

Est-ce que quelqu'un sait comment forcer NLS_SORT = BINARY mybatis? (Il est déjà défini sur ma base de données Oracle dans NLS_DATABASE_PARAMETERS)

Était-ce utile?

La solution

On dirait qu'il pourrait être une question locale. Se connecter avec écureuil et vérifier ce que NLS_LANG il définit, puis vérifiez votre utilisation que soit la langue application java. Un autre paramètre qui peut influencer est un peu NLS_SORT.

Vous pouvez vérifier la valeur à la fois par l'émission:

select parameter,value from NLS_DATABASE_PARAMETERS where parameter in('NLS_LANGUAGE','NLS_SORT');

Ensuite, vous pouvez le tester en Java en utilisant:

Locale.getDefault()

et mettez-le à l'aide:

Locale.setDefault(Locale)

ou en ajoutant des paramètres JVM:

-Duser.country=en -Duser.language=en

modifier

forums de printemps recommande la création d'un déclencheur de connexion qui définit la variable d'environnement NLS_SORT ouverture de session utilisateur. Ce ne sont pas mybatis, mais de toute façon jdbc devrait donc fonctionner dans votre cas.

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