Bonjour,

Dans le cadre d'une application .ear je voudrais récupérer un enregistrement dans une base de données à partir d'un champ login. Le module webapp utilise le framework jsf.

Pour cela : j'ai un managed bean avec une méthode rudimentaire doSignIn() qui est appellé par l'utilisateur depuis une JSP.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 public String doSignIn(){
    String cle=null;
    Parents p = pfl1.findByLogin(login);
    System.out.println("nom"+p.getNom());
    return cle;
    }
la méthode findByLogin se trouve dans un Stateless bean du module EJB.
La voici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 public Parents findByLogin(String login) {
        //ligne 45 ici (cf stacktrace)
        Parents p =(Parents) em.createQuery("SELECT p FROM Parents p WHERE p.login = :login").getSingleResult();
        System.out.print("parent : "+p.getEmail());
        return p;
   }
Précisons enfin que mon entity correspondant se nomme "Parents" (histoire d'essayer d'être clair :p).

Lorsque je tente d'exécuter ce code, ma jsp affiche une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Cause racine 
 
java.lang.IllegalStateException: Query argument login not found in the list of parameters provided during query execution
D'après moi cela signifie que le passage du paramètre login saisi par l'utilisateur dans la boite de login à la requête JPQL pose problème...et à mon avis c'est à l'endroit de la requête...mais pourquoi? et comment résoudre ce problème?

Quelqu'un a-t-il une idée?
Merci.