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

JSF Java Discussion :

erreur avec la methode findBy


Sujet :

JSF Java

  1. #1
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 132
    Points : 43
    Points
    43
    Par défaut erreur avec la methode findBy
    Salut ,

    Bonjour , je développe une entreprise application JEE (avec l'EJB) avec netbeans 6.7 ,JSF et Wampserver , representant une interface web aux clients qui leurs permettent de s'inscrire en fournissant certains données au premier temps et de login et modifier leurs comptes ultérieurement .

    Je manipule deux table dans ma base de données : table 'client' et table 'interest' .
    Ma table client contient 3 colonnes : id , keyword et clientId .

    Dans une de mes pages JSP , je veux afficher des lignes de ma table interest
    suivant le critére " clientId= x " par exemple . Or j'utilise les EJB .
    Il y' 5 methodes prédéfinies dans ma page 'InterestFacadeLocal' , deux parmi ces 5 aident pour la recherche qui sont : find et findAll .
    La methode findAll ,je pense qu'elle ne permet pas d'effecture une recherche suivant un critére , elle rend toute les lignes de la table .


    Donc , j'ai définit la methode suivante dans la page 'InterestFacade' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     public List<Interest> findByClientId(String clientId ) {
            return em.createQuery("select o from Interest  as o where o.clientId= :clientId").setParameter("clientId", clientId).getResultList();
        }
    J'ai ajouté ca dans la page 'InterestFacadeLocal' .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     List<Interest> findByClogin(String clogin);
    J'ai definit dans mon managedbean 'metier' la methode lists suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public String lists()
    {    clientId =x;
         System.out.println("--------1-------");
        System.out.println("---------------"+clientId );
         intlist =findByClientId (clientId );
        System.out.println("--------2-------");
     
         getIntlist ();
         System.out.println("--------3-------");
        return "lists";
    }

    ou intlist est une une liste de interest .


    Maintenant au moment du run , lorsque j'appelle la methode 'lists' en cliquant sur un bouton 'interests' j'obtient l'erreur suivant :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    type Rapport d'exception
     
    Message
     
    DescriptionLe serveur a rencontré une erreur interne () qui l'a empêché de remplir cette requête.
     
    Exception
     
    javax.servlet.ServletException: #{metier.lists}: javax.ejb.EJBException
     
    Cause racine
     
    javax.faces.FacesException: #{metier.lists}: javax.ejb.EJBException
     
    Cause racine
     
    javax.faces.el.EvaluationException: javax.ejb.EJBException
     
    Cause racine
     
    javax.ejb.EJBException
     
    Cause racine
     
    java.lang.IllegalArgumentException: An exception occured while creating a query in EntityManager
     
    Cause racine
     
    Exception [TOPLINK-8026] (Oracle TopLink Essentials - 2.1 (Build b60e-fcs (12/23/2008))): oracle.toplink.essentials.exceptions.EJBQLException
    Exception Description: Syntax error parsing the query [select o from Interest  o where o.clientId= : clientId], line 1, column 44: unexpected char [ ].
     
    note Les suivis de pile complets de l'exception et de ses causes principales sont disponibles dans les journaux Sun GlassFish Enterprise Server v2.1.
    L'output de glassfish est le suivant :

    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
    20
     
     
    --------1-------
    --------2-------x
    EJB5018 : Une exception a été renvoyée lors d'un appel ejb sur [InterestFacade].
    javax.ejb.EJBException
            at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:3894)
            at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:3794)
            at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:3596)
            at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1379)
            at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1316)
            at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:205)
            at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:127)
            at $Proxy1022.findByClogin(Unknown Source)
            at metier.metier.lists(metier.java:716)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at com.sun.el.parser.AstValue.invoke(AstValue.java:187)
    Une idée ? Merci

  2. #2
    Membre habitué Avatar de faico
    Inscrit en
    Août 2005
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 242
    Points : 179
    Points
    179
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select o from Interest  o where o.clientId= : clientId
    je pense qu'il y a un espace entre ':' et 'clientId' qu'il faut supprimer

  3. #3
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 132
    Points : 43
    Points
    43
    Par défaut
    Je l'ai supprimé mais ca n'a rien changé .

  4. #4
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 132
    Points : 43
    Points
    43
    Par défaut
    c bon ca a marché comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    intlist=inf.findByClogin(String clogin);
    ou intlist est défini comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private List<Interest> intlist = new ArrayList<Interest>();
    Merci beaucoup

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

Discussions similaires

  1. [Débutant] Erreur sur mon code avec mes methodes.
    Par solaar dans le forum Silverlight
    Réponses: 5
    Dernier message: 30/05/2013, 17h43
  2. erreur avec la methode find
    Par dalidali86 dans le forum JSF
    Réponses: 1
    Dernier message: 09/09/2009, 23h42
  3. Erreur [Incompatible types] avec la Methode Write
    Par aliwassem dans le forum Langage
    Réponses: 6
    Dernier message: 21/12/2008, 04h50
  4. Erreur avec WM_COMMAND (BN_CLICKED)
    Par cyberlewis dans le forum Windows
    Réponses: 2
    Dernier message: 09/02/2004, 00h25

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