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' :
J'ai ajouté ca dans la page 'InterestFacadeLocal' .
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 definit dans mon managedbean 'metier' la methode lists suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part List<Interest> findByClogin(String clogin);
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 :
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
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.
Une idée ? Merci
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)
Partager