Bonjour,

j'ai besoin de personnaliser une requette dynamique JPQL (appelée NamedQuery je pense), pour une appliation web avec JPA.
J'ai lu des tutos mais y'a une partie que j'arrive simplement pas à comprendre: (pour simplifier la question voilà un example)

j'ai l'entié Parent , et je veux afficher la liste des X Premiers Parents dont X une valeur à saisir et recuperer après au niveau de la page JSP.

voilà l'entité Parent:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
@Entity
@Table
@NamedQueries({ @NamedQuery(name = "Parent.getXPremierParent", query = "   SELECT e FROM Parent e WHERE e.ParentId < :x  ")})
 
public class Parent implements Serializable {
...}
la class ParentDao:
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
@Stateless
public class ParentDao implements ParentDaoLocal {
 
    @PersistenceContext
    private EntityManager em;
 
...
    @Override
    public List<Parent> getXPremierParent(int x) {
        return em.createNamedQuery("Parent.getXPremierParent").getResultList();
 
        setParameter("x", x); /* <<<---- JE SAIS PAS SI J'AI LE DROIT DE METTRE CETTE LIGNE*/
 
    } 
}
L'interface ParentDaoLocal:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
@Local
public interface ParentDaoLocal { 
 
...    
      List<Parent> getXPremierParent(int x);
 
      }
Et voila le Servlet:

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
@WebServlet(name = "ParentServletJPQLTest", urlPatterns = {"/ParentServletJPQLTest"})
public class ParentServletTest extends HttpServlet {
 
        @EJB
        private ParentDaoLocal ParentDao;     
 
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
 
        int xParentId = Integer.parseInt(request.getParameter("xParentId"));
 
        List<Parent> Parents = ParentDaoTest.getXPremierParent(xParentId); //?????????
 
        System.out.println(Parents.toString()); //Pour tester.
 
 
        request.setAttribute("Parents", Parents);
        request.getRequestDispatcher("XPremierParent.jsp").forward(request, response);
 
}