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

Java EE Discussion :

Lister le resultat d'une requête [EJBQL]


Sujet :

Java EE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Par défaut Lister le resultat d'une requête
    Bonjour,

    je découvre les ejb3 je peux écrire dans les tables comme je le souhaite avec ejb3 via un servlet ou une page JSF mais j'accroche pas vraiment sur la manière de lister des résultats d'une requète ejb-ql

    donc je vous met le code de mon ejb session statefull

    la methode qui permet d'introduire des données et qui fonctionne parfaitement
    pour vous indiqué que je n'ai pas de soucis de configuration avec mes entitys

    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
      public boolean addadresse(String vville, String vrue, String vnumrue, String vpays, String vcp) {
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("netbrain-ejbPU");
            EntityManager        em  = emf.createEntityManager();
            Pays                 p   = new Pays();
     
            p.setPays(vpays);
     
            Ville cpv = new Ville();
     
            cpv.setVille(vville);
            cpv.setIdpays(p);
     
            Adresse adr = new Adresse();
     
            adr.setBp(vnumrue);
            adr.setIdville(cpv);
            adr.setRue(vrue);
            em.getTransaction().begin();
            em.persist(p);
            em.persist(cpv);
            em.persist(adr);
            em.getTransaction().commit();
     
            em.close();
            emf.close();
     
            return true;
        }
    ======= Voici la methode que j'utilise pour retourné un generic d'object =====

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      public List<Object[]>  selectadresse() {
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("netbrain-ejbPU");
            EntityManager        em  = emf.createEntityManager();
           String texteRequête = "SELECT * FROM Adresse AS Adresse";
            Query requete = em.createQuery(texteRequête);
            List<Object[]> resultat = requete.getResultList();
     
             return resultat;
     
        }
    =======

    et pour finir voici le code de ma 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
            List<Object[]> varadr;
            try {
     
                //* TODO output your page here
                out.println("<html>");
                out.println("<head>");
                out.println("<title>Servlet gaetan</title>");  
                out.println("</head>");
                out.println("<body>");
                out.println("<h1>Servlet gaetan at " + request.getContextPath () + "</h1>");
               // out.println("activeconnDB status : " +  adresseBean.activeconnDB());
                out.println("addadress status : " + adresseBean.addadresse("dupuid", "chaussee", "178", "Russiell", "7800"));
               varadr = adresseBean.selectadresse();
                for(Object[] unadresse: varadr)
                    {
                    out.println("adresse 2 listing" + (String) unadresse[2]+ "<br/>");
                    out.println("adresse 3 Listing" + (String) unadresse[3] + "<br/>");
                    }
              //
                out.println("</body>");
                out.println("</html>");
               //*/
                // adresseBean.activeconnDB();
                // adresseBean.addadresse("dupuid", "rue  de bruxelles", "178", "Russie", "7800");
               //  adresseBean.closeconnDB();
            } finally { 
                out.close();
            }

    Je vous remercie d'avance pour votre aide.

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 152
    Par défaut
    pour le parcours d'une liste tu peux utiliser une boucle de type "foreach" en voici la syntaxe:
    Soit la liste suivante List<Object> liste;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for( Object o: liste)
    {
       System.out.println( o.toString() );
    }
    Bonne chance pour la suite

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Par défaut
    merci pour le coup de pouce Piopium

    j'ai ceci afficher par ma servlet c'est deja mieux mais se n'est pas encore parfait
    je cherche a distingué mes colonnes



    la methode de mon ejb est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     public List<Object[]>  selectadresse() {
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("netbrain-ejbPU");
            EntityManager        em  = emf.createEntityManager();
           String texteRequête = "SELECT A.id, A.idville, A.bp, A.rue FROM Adresse AS A";
         // String texteRequête = "SELECT * FROM Adresse AS A";
            Query requete = em.createQuery(texteRequête);
            List<Object[]> resultat = requete.getResultList();
     
             return resultat;
     
        }
    et le code de la servlet qui affiche les info

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     //for(Object[] unadresse:iterat)
                for(Object o: adresseBean.selectadresse())
                {;
                    out.println("adresse 2 listing" +  o.toString() + "<br/>");
               //     out.println("adresse 3 Listing" + (String) unadresse[3] + "<br/>");
                    }
    maintenant j'ai ceci je cherche a voir comment je peux avoir les resultats dans de jolie colonne
    et surtout plus cohérentes


    addadress status : true
    adresse 2 listing[Ljava.lang.Object;@ceecf5
    adresse 2 listing[Ljava.lang.Object;@126582a
    adresse 2 listing[Ljava.lang.Object;@803d5f
    adresse 2 listing[Ljava.lang.Object;@73e664
    adresse 2 listing[Ljava.lang.Object;@145b29f
    adresse 2 listing[Ljava.lang.Object;@12882d6

    Merci d'avance pour votre aide je cherche a avoir les informations cohérentes affichée

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 152
    Par défaut
    Concernant les requêtes, je suis plutôt pour les vraies requêtes EJB-QL faite avec createQuery() (selon les modèles donnés au poste précédent). A partir de là, tu récupères une liste d'objet (via la méthode getResultList() ) du type concerné à savoir pour la requête "SELECT a FROM Adresse a" List<Adresse>.

    Sinon, si j'ai bien compris tu as une liste de tableau
    donc tu fais une boucle pour la liste et encore une pour chaque tableau du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for(Object[] tabObj: myList)
    {
         for( Object o: tabOjb)
         {
              System.out.println(o.toString() );
         }
    }
    sachant que la boucle sur tabObj peut aussi être une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     for(i=0; i<tabObj.length; i++) { }
    voir un while ou un do/while
    tout dépend de tes besoins

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Par défaut
    merci pour votre aide mais je ne parviens pas a avoir mes colonnes corretement

    je pense que je me trompe dans le parcour du tableau ma sevlet n'affiche plus de resultat pour le select ...

    dans la table adresse 'jai ceci

    id clef primaire
    idville clef etrangère
    bp varchar
    rue varchar

    le code de la 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
    21
    22
    23
    24
    25
    26
    27
        for(Object[] unadresse:adresseBean.selectadresse())
                 {
                for(Object o: unadresse)
                  //  for(Integer i=0; i<unadresse.length; i++)
                {
                   out.println(o.toString().indexOf(2));
                    //out.println("adresse 2 listing" +  unadresse.toString()  + "<br/>");
                   // out.println("adresse 2 listing" +  o.toString() + "<br/>");
               //     out.println("adresse 3 Listing" + (String) unadresse[3] + "<br/>");
                    }
              //
                }
     
    et dans ma methode de mon EJB j'ai ceci 
     
     
        public List<Object[]>  selectadresse() {
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("netbrain-ejbPU");
            EntityManager        em  = emf.createEntityManager();
           String texteRequête = "SELECT Adr FROM Adresse AS Adr";
         // String texteRequête = "SELECT * FROM Adresse AS A";
            Query requete = em.createQuery(texteRequête);
            List<Object[]> resultat = requete.getResultList();
     
             return resultat;
     
        }
    je vous remercie pour votre aide

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Par défaut
    La solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      EntityManagerFactory emf = Persistence.createEntityManagerFactory("netbrain-ejbPU");
            EntityManager        em  = emf.createEntityManager();
           String texteRequête = "SELECT Adr FROM Adresse AS Adr";
         // String texteRequête = "SELECT * FROM Adresse AS A";
            Query requete =  em.createQuery(texteRequête);
            List<Adresse> resultat = requete.getResultList();
            for (Adresse unePhoto : resultat) {
      System.out.println("Identification : " + unePhoto.getRue().toString());
      System.out.println("Identification : " + unePhoto.getBp().toString());
     
    }
    Merci pour votre aide

  7. #7
    Membre chevronné

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2002
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2002
    Messages : 72
    Par défaut
    vous avez écris ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String texteRequête = "SELECT * FROM Adresse AS Adresse";
    Query requete = em.createQuery(texteRequête);
    il ne faudrait pas plutôt ceci avec une requete en sql natif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String texteRequête = "SELECT * FROM Adresse AS Adresse";
    Query requete = em.createNativeQuery(texteRequête);
    sinon mettre une vraie requete hql avec createQuery

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String texteRequête = "SELECT adr FROM Adresse adr";
    Query requete = em.createQuery(texteRequête);
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String texteRequête = "FROM Adresse adr";
    Query requete = em.createQuery(texteRequête);
    Si Adresse est votre entity bean

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

Discussions similaires

  1. Impossible d'exporter le resultat d'une requête
    Par uloaccess dans le forum Access
    Réponses: 5
    Dernier message: 21/02/2008, 19h20
  2. affichage du resultat d'une requête
    Par PAUL87 dans le forum Access
    Réponses: 3
    Dernier message: 25/09/2005, 20h12
  3. Resultat d'une requête dans TEdit
    Par the watcher dans le forum Connexion aux bases de données
    Réponses: 5
    Dernier message: 08/09/2005, 18h00
  4. [SQL Server] Limiter le resultat d'une requête
    Par obiwan dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 02/06/2004, 11h25
  5. Proposer le resultat d'une requête en téléchargement
    Par Lux interior dans le forum XMLRAD
    Réponses: 5
    Dernier message: 17/02/2003, 15h44

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