JPA comparaison de chaînes de caractères

J'ai écrit un simple système de connexion à l'aide d'une requête JPQL, qui revient toujours pas de résultat:

public boolean check(String name, String password) {
    final String qstring="SELECT e FROM Muser e WHERE e.name = '"+name+"'";
    Muser user;
    try{
        user = em.createQuery(qstring, Muser.class).getSingleResult();  
    }
    catch(NoResultException e){
        return false;
    }
    return password.equals(user.getPassword());
}

Quand je l'ai changé pour une requête native:

user = (Muser) em.createNativeQuery(qstring, Muser.class).getSingleResult();

ou un int expression:

final String qstring="SELECT e FROM Muser e WHERE e.id = "+id; 

Il va tout droit. Quel est le problème? Un million de mercis!

  • Ne pas stocker les mots de passe en texte clair: hash eux. Créez la requête des arguments: les paramètres d'utilisation (pour éviter l'injection de code).
InformationsquelleAutor | 2011-11-09