J'ai un problème avec une fonction inférieure et supérieure dans JPA (Hibernate). Dans mon application, un utilisateur doit ajouter un nouvel élément à la base de données, mais le nom doit être unique. Pour y parvenir, je dois comparer la chaîne entrée par l'utilisateur avec les chaînes de la base de données et ignorer la casse en vérifiant cela.Les fonctions Hibernate inférieure et supérieure ne fonctionnent pas avec les caractères spéciaux polonais
Malheureusement, comme j'utilise la fonction Hibernate pour faire toutes les données en majuscules (afin de les comparer) tout fonctionne bien, sauf pour les caractères spéciaux polonais qui restent les mêmes.
C'est le code que je l'ai utilisé à des fins de test afin de vérifier si elle fonctionne:
TypedQuery<String> query = em.createQuery("SELECT upper(i.name) FROM Item i", String.class);
for (String name: query.getResultList())
System.out.println(name);
Et c'est ce que je reçois:
- Czysty bandaz
- Maly CHEMIK
- MAYY MECHANIK
- SPRZęT
- ŚPIWóR
- Srodek DEZYNFEKUJąCY
- Srodek CZYSZCZąCY
Toutes les lettres doivent être tubé supérieure. Dans la base de données, chaque première lettre d'un premier mot est toujours en majuscule. Le problème concerne des caractères tels que: , 0, 0, 0, 0, - ils devraient ressembler à , mais ils ne semblent pas les reconnaître comme un seul caractère. qui ne diffère que par rapport à l'affaire.
La même chose se produit lorsque j'utilise une fonction inférieure. Les caractères polonais ne sont pas affectés du tout et restent les mêmes.
Je ne sais pas si cela ne concerne que des caractères polonais ou d'autres langues.
Je serais très reconnaissant pour toute allusion à ce sujet.
EDIT: J'utilise Hibernate 5.2.2 Final avec la base de données SQLite et le pilote Xerial 3.8.11.2.
EDIT2: La même chose se produit si j'essaie d'y parvenir en utilisant une requête SQL native avec Hibernate.
quelle version utilisez-vous? –
@khalilM J'utilise Hibernate 5.2.2 Final et Xerial 3.8.11.2 avec la base de données SQLite :) – Bloodlex
mais "³" fonctionne bien? –