IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Hibernate requête probleme de casse ?


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 5
    Par défaut Hibernate requête probleme de casse ?
    Bonjour,

    j'utilise Hibernate3 et MySQL5

    L'internaute s'identifie en entrant un code pour accéder à la suite du site.

    Dans ma classe DAO, j'ai la méthode 'selectVisiteurByCode(String code)' pour tester la présence de ce code dans ma table.
    (Le champ 'code': VARCHAR() / défini comme unique.)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public static Visiteur selectVisiteurByCode(String code){
     
       //ouverture session
       //...
     
       Query q2 = session.createQuery("from Visiteur where code = '" + code + "'");
     
       List<Visiteur> list = q2.list();
     
       if(list.size()>0){//si le code est présent
    	Visiteur v1 = (Visiteur) list.get(0);
    	System.out.println("Code trouvé : " + v1.getCode());
    	return v1;
       }
       else{
    	return null;
       }
     
    }
    Le méthode fonctionne, mais le problème vient du fait que la casse de 'code' n'est pas pris en compte.

    Par exemple:

    Si dans ma table, j'ai dans la colonne 'code': E2aF

    Que je fasse une recherche avec E2AF ou E2aF , et bien ma méthode trouve dans les 2 cas le même objet.

    Alors que je veux un résultat positif uniquement si je cherche la présence de E2aF


    Savez-vous comment faire pour que la casse de code soit pris en compte ?

    Merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 5
    Par défaut
    Après avoir posté aussi sur un autre forum voici la solution

    Solution 1 :
    Faire un second test dans ma méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(code.equals(v1.getCode())){
                System.out.println("Code trouvé : " + v1.getCode());
                return v1;
    }

    Solution 2:
    J'ai trouvé pourquoi ma requête ne tient pas compte de la casse.

    En fait ça viens des caractéristiques de la table MySQL.
    C'est l'attribut "Collation" qui est en cause.
    Par défaut, MySQL configure mes bases avec Collation = latin1_swedish_ci (ci comme "case insensitive")
    J'ai donc changé ce paramètre en latin1_general_cs (cs comme "case sensitive")
    Et cette fois, ma requête tient bien compte de la casse.

    C'est le même genre de problème avec les accents, mais dans mon cas, je n'ai pas testé.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme de casse dans l'entreprise manager sql Srv 2k
    Par poosh dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/04/2006, 08h23
  2. [Hibernate][MySql] probleme de connexion ...
    Par Gromitou dans le forum Hibernate
    Réponses: 6
    Dernier message: 28/02/2006, 15h23
  3. [Hibernate JBoss] Probleme de clé primaire
    Par jmartell dans le forum Wildfly/JBoss
    Réponses: 3
    Dernier message: 08/01/2006, 16h12
  4. probleme de casse avec mandrake
    Par sebduc dans le forum Installation
    Réponses: 2
    Dernier message: 11/03/2005, 14h35
  5. probleme de casse (sql en général)
    Par Hell dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/06/2004, 10h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo