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

JPA Java Discussion :

Récupérer les élément de toutes les colonnes d'une table en JPA


Sujet :

JPA Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 122
    Points : 57
    Points
    57
    Par défaut Récupérer les élément de toutes les colonnes d'une table en JPA
    Bonjour,

    J ai la fonction getResultList() qui retourne un tableau d'un résultat sql, genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Query query = entityManager.createNativeQuery("select a from table");
    malist = query.getResultList();
    ça me retourne la listes des éléments 'a'.

    Moi je veux avoir le résultats d'une requête récupère plusieurs colonne et non seulement une.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select a, b,c from maTable
    comment faire ?
    merci pour l'aide

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    comme tu as noté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select colonne1, colonne2, colonne3 from table
    Au retour, tu as une liste de tableau d'Object à traiter où tbl[0] correspondra à colonne1, tbl[1] à colonne2 etc...

  3. #3
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    On peut savoir pourquoi tu fais une nativeQuery? plutot qu'une requete HQL?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 122
    Points : 57
    Points
    57
    Par défaut
    Au retour, tu as une liste de tableau d'Object à traiter où tbl[0] correspondra à colonne1, tbl[1] à colonne2 etc...
    je vais voir ça merci

    On peut savoir pourquoi tu fais une nativeQuery? plutot qu'une requete HQL?
    Je veux en profiter de certaines fonctions sql sur les attributs. plutôt que de créer les objets les parcourir et faire le traitement en java.

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par DevServlet Voir le message
    On peut savoir pourquoi tu fais une nativeQuery? plutot qu'une requete HQL?
    Dans beaucoup de cas, lorsqu'il s'agit de recherche d'informations (filtrage, etc) les requêtes natives sont plus performantes (choix de chemin d'accès).
    Pour ce qui est du modèle "métier", ma préférence va bien sûr aux entity

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 122
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    comme tu as noté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select colonne1, colonne2, colonne3 from table
    Au retour, tu as une liste de tableau d'Object à traiter où tbl[0] correspondra à colonne1, tbl[1] à colonne2 etc...
    Je peu pas faire ça , le getResultList retourne une List et non un tableau. donc je ne peux pas faire un truc tb1[0] ....

  7. #7
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut
    pour quoi pas plus tôt ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
           public List<Type> findAll() {
            try {
                CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
                cq.select(cq.from(entityClass));
                return getEntityManager().createQuery(cq).getResultList();
            } catch (Exception ex) {
                getLogger().log(Level.INFO, "Exception lors de l''appel au service " + entityClass + "Impl.findAll {0}", ex.getStackTrace());
                return null;
            }
        }
    le reste ces du java et la gestion des liste dans des boucle

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par death_style Voir le message
    Je peu pas faire ça , le getResultList retourne une List et non un tableau. donc je ne peux pas faire un truc tb1[0] ....
    je fais ça à longueur de temps, je peux t'assurer que ça fonctionne.
    le getResultList() te renvoie une List<Object[]>

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par geforce Voir le message
    pour quoi pas plus tôt ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        public Type find(Object id) {
            try {
                return getEntityManager().find(entityClass, id);
            } catch (Exception ex) {
                getLogger().log(Level.INFO, "Exception lors de l''appel au service " + entityClass + "Impl.find {0}", ex.getStackTrace());
                return null;
            }
        }
    le reste ces du java et la gestion des liste dans des boucle
    Un find te renvoie une instance d'une entité, pas une liste (correspondant par exemple à des critères de sélection)

  10. #10
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Dans beaucoup de cas, lorsqu'il s'agit de recherche d'informations (filtrage, etc) les requêtes natives sont plus performantes (choix de chemin d'accès).
    Pour ce qui est du modèle "métier", ma préférence va bien sûr aux entity
    C'est éventuellement plus rapide si on se sert de fonctionnalités particulières à la base de données, comme le choix d'index particulier.
    Si c'est juste pour faire un select a from b, ça n'a pas trop d'intérêt à mon sens.

  11. #11
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fr1man Voir le message
    Si c'est juste pour faire un select a from b, ça n'a pas trop d'intérêt à mon sens.
    Même pour un simple select ça peut avoir du sens si la table à beaucoup de colonnes et/ou une taille d'enregistrement élevée.

  12. #12
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Effectivement, mais dans ce cas, on est dans un cas particulier.

  13. #13
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    pas tant que ça...
    Dans le cadre de recherches, pourquoi s'embarrasser à extraire des colonnes dont on n'a pas besoin dans les vues (au sens IHM)...
    Sans compter que des jointures judicieuses peuvent booster les requêtes.

  14. #14
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Tout ça est faisable sans passer par du SQL pur.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 122
    Points : 57
    Points
    57
    Par défaut
    Merci pour vos réponse,
    ça marche nikel bien avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    List<Object[]> list = query.getResultList(sql);
     
    for (Object[] object : list) {
     
          for (int i = 0; i < object.length; i++) {
                    System.out.println( object[i].toString());
          }
    }
    merci OButterlin

    Sinon, mon avis sur le sujet , personnellement , je trouve que dans certain cas, (parfois nombreux faut l'avouer ) l sql ordinaire et de loin meilleur qu'un traitement sur les objets en java. (traitement sur les Dates, les jointure les GROUP BY et surtout les COUNT.

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

Discussions similaires

  1. Extraire toutes les données de toutes les tables
    Par fandreoli dans le forum PL/SQL
    Réponses: 1
    Dernier message: 06/08/2014, 18h13
  2. Update sur toutes les champs de toutes les tables
    Par cmasset dans le forum Requêtes
    Réponses: 2
    Dernier message: 19/12/2013, 19h04
  3. Lister toutes les lignes de toutes les tables
    Par méphistopheles dans le forum Langage SQL
    Réponses: 3
    Dernier message: 09/07/2010, 18h23
  4. Réponses: 12
    Dernier message: 21/05/2010, 13h36
  5. egaliser toutes les cellules "" de toutes les feuilles
    Par tomy7 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/03/2008, 12h23

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