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

Servlets/JSP Java Discussion :

Sélection de données en JPQL puis affichage


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    BTS IRIS
    Inscrit en
    Juin 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : BTS IRIS
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 48
    Par défaut Sélection de données en JPQL puis affichage
    Bonjours je n'arrive pas a comprendre comment je pourrais afficher ma requête jpql dans ma jsp.
    le code de ma jsp:
    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
       List<Personne> listePersonnes = (List<Personne>) request.getAttribute("listePersonnes");
     
                            for (Personne p : listePersonnes) {
     
                                if (p instanceof Etudiant) {
                                    out.println("<tr><td>" + p.getNom() + "</td>");
                                    out.println("<td>" + p.getPrenom() + "</td>");
                                    out.println("<td>" + p.getEmail() + "</td>");
                                    out.println("<td>" + p.getIdentifiant() + "</td>");
                                    out.println("<td>" + p.getMotDepasse() + "</td>");
     
                                    for (Adresse a : p.getAdresse()) {
                                        out.println("<td>" + a.getRue() + "</td>");
                                        out.println("<td>" + a.getVille() + "</td>");
                                        out.println("<td>" + a.getCodepostal() + "</td>");
     
                                    }
     
     
                                    out.println("<td><a href=\"controleurUtilisateurs.jsp?action=del&idPersonne=" + p.getIdPersonne() + "\">Supprimer</a></td></tr>");
                                }
                            }
    le probleme est au niveau du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     for (Adresse a : p.getAdresse()) {
                                        out.println("<td>" + a.getRue() + "</td>");
                                        out.println("<td>" + a.getVille() + "</td>");
                                        out.println("<td>" + a.getCodepostal() + "</td>");
     
                                    }
    for-each not applicable to expression type
    required: array or java.lang.Iterable
    found: com.projet.classes.personnes.Adresse


    et voici ma requête que je lui envoie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Query query = em.createQuery("SELECT p FROM Personne p LEFT JOIN p.adresse a");
                        List<Personne> listePersonnes = query.getResultList();
     
                        request.setAttribute("listePersonnes", listePersonnes);
     
                        getServletContext().getRequestDispatcher("/Afficher/afficherPersonnes.jsp").forward(request, response);
    merci de votre aide

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Hibernate n'a rien à voir ton problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for-each not applicable to expression type
    required: array or java.lang.Iterable
    found: com.projet.classes.personnes.Adresse
    Tu essaie de boucler sur la valeur de retour de personne.getAdresse, mais personne.getAdresse te retourne un type Adresse et non pas un List<Adresse> ou un Adresse[] ou toute autre forme de Collection<Adresse>

    Bref, ce n'est pas une collection, donc tu ne peux pas itérer dessus. Ce qui est assez logique, on vois mal une personne avoir plusieurs adresses

  3. #3
    Membre averti
    Homme Profil pro
    BTS IRIS
    Inscrit en
    Juin 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : BTS IRIS
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 48
    Par défaut
    merci de ta réponse j'avais un peu compris a ce niveau là mais y a t-il une solution pour afficher ma requete jpql

  4. #4
    Membre averti
    Homme Profil pro
    BTS IRIS
    Inscrit en
    Juin 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : BTS IRIS
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 48
    Par défaut
    Pour enlever mon erreur je lui est mis cela
    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
    for (Personne p : listePersonnes) {
     
                                if (p instanceof Etudiant) {
                                    out.println("<tr><td>" + p.getNom() + "</td>");
                                    out.println("<td>" + p.getPrenom() + "</td>");
                                    out.println("<td>" + p.getEmail() + "</td>");
                                    out.println("<td>" + p.getIdentifiant() + "</td>");
                                    out.println("<td>" + p.getMotDepasse() + "</td>");
                                    Adresse a = p.getAdresse();
                                   out.println("<td>" + a.getRue()+ "</td>");
                                   out.println("<td>" + a.getVille()+ "</td>");
                                   out.println("<td>" + a.getCodepostal()+ "</td>");
     
     
                                    out.println("<td><a href=\"controleurUtilisateurs.jsp?action=del&idPersonne=" + p.getIdPersonne() + "\">Supprimer</a></td></tr>");
                                }
     
                            }
    mais maintenant il me mais une erreur java.lang.NullPointerException

    Enfaite la vrai question est comment faire pour récupérer une liste contenant la personne avec son sachant que j'ai une coposition entre personne et adresse soit dans ma table personne une colone idAdresse qui me renvoie sur l'adresse" de la personne

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par Christophe39 Voir le message

    mais maintenant il me mais une erreur java.lang.NullPointerException
    Je suppsoe que la personne en question n'a pas d'adresse


    Citation Envoyé par Christophe39 Voir le message
    Enfaite la vrai question est comment faire pour récupérer une liste contenant la personne avec son sachant que j'ai une coposition entre personne et adresse soit dans ma table personne une colone idAdresse qui me renvoie sur l'adresse" de la personne
    Tu n'a rien de particulier à faire, ton entitymanage rfait déjà ce boulot (pour autant que tu a réalisé correctement ton mapping, bien sur).

    Il te suffit de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<Personne> listePersonnes = em.createQuery("from Personne").getResultList();
    Et tu pourra accéder à tout ce qui concerne la personnes.

  6. #6
    Membre averti
    Homme Profil pro
    BTS IRIS
    Inscrit en
    Juin 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : BTS IRIS
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 48
    Par défaut
    merci de ta réponse mais apres pour mon affichage comment y afficher sachant que j'aimerais avoir dans mon tableau toutes les adresse soit getVille() getRue() getCodepostale() ainsi que tout les getter lié au attribut de la class personne soit en gros comme ceci ( c'est une image le code ne marche pas)
    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
    for (Personne p : listePersonnes) {
     
                                if (p instanceof Etudiant) {
                                    out.println("<tr><td>" + p.getNom() + "</td>");
                                    out.println("<td>" + p.getPrenom() + "</td>");
                                    out.println("<td>" + p.getEmail() + "</td>");
                                    out.println("<td>" + p.getIdentifiant() + "</td>");
                                    out.println("<td>" + p.getMotDepasse() + "</td>");
                                    out.println("<td>" + p.getVille()+ "</td>");
                                    out.println("<td>" + p.getRue()+ "</td>");
                                    out.println("<td>" + p.getVille()+ "</td>");
                                    out.println("<td><a href=\"controleurUtilisateurs.jsp?action=del&idPersonne=" + p.getIdPersonne() + "\">Supprimer</a></td></tr>");
                                }
     
                            }

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

Discussions similaires

  1. [Toutes versions] Liste déroulante - Sélection puis affichage d'une autre donnée
    Par matbiz dans le forum Excel
    Réponses: 5
    Dernier message: 11/11/2011, 12h33
  2. Réponses: 0
    Dernier message: 29/06/2011, 14h04
  3. Sélection liste déroulante puis affichage de text box
    Par dolu007 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 11/11/2006, 00h03
  4. Batch d'extraction avec sélection des données ?
    Par beastman007 dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/05/2006, 11h02
  5. Sélection des données d'un champ avec le focus de la souris
    Par Nerva dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 13/12/2005, 15h23

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