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

Persistance des données Java Discussion :

Requête multi table paramétrée en JPQL


Sujet :

Persistance des données Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 62
    Par défaut Requête multi table paramétrée en JPQL
    Bonjour,

    Étant nouveau avec JPQL, j'ai un peu de mal à faire les choses les plus basiques. Actuellement j'ai deux entités Livre et Categorie. A l'exécution, Glassfish me renvoie une erreur 500 :

    type Exception report

    message
    description The server encountered an internal error () that prevented it from fulfilling this request.

    exception
    javax.ejb.EJBException
    Voici la méthode qui pose problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public int getNbBookByCat(String categorie) {
     
            Query q = em.createQuery("SELECT l FROM Livre l JOIN l.Categorie c WHERE c.nomCat = ?1");
            q.setParameter(1, categorie);
            List<Livre> results = (List<Livre>) q.getResultList();
            return results.size();
        }
    Le but est donc de retourner le nombre de livres en fonction d'une catégorie. Une simple requête Select pour afficher tous les livres fonctionne sans problème. Je pense que le problème vient de la jointure : selon les logs de Glassfish il pense que Categorie est un champ de Livre...

    Merci

  2. #2
    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
    Par défaut
    Et si t'essaie ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Query q = em.createQuery("SELECT l FROM Livre l JOIN l.Categorie c WHERE c.nomCat = :paramCategorie");
    q.setParameter("paramCategorie", categorie);

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 62
    Par défaut
    Non ça ne marche toujours pas :

    unknown state or association field [Categorie] of class [com.javaxia.business.entities.Livre]
    J'ai dû oublier un truc fondamental quelque part...

  4. #4
    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
    Par défaut
    L'erreur est assez claire non? Dans ta classe entité Livre, il ne voit pas le lien fait avec la Categorie. Fais nous voir le code des 2 classes. Au moins t'as avancé parceque t'avais une erreur de requete, maintenant c'est le mapping

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 62
    Par défaut
    Les deux entities ont été généré depuis une base de données :

    http://pastebin.com/1xSwZuSP pour Livre

    http://pastebin.com/dJC2tYTb pour Catégorie

  6. #6
    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
    Par défaut
    Eh ben t'as un petit souci de navigation jpa entre les entités dans ce cas. Essaies plutot ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Query q = em.createQuery("SELECT l FROM Livre l WHERE l.idCat.nomCat= :paramNomCategorie");
    q.setParameter("paramNomCategorie", categorie);
    .

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

Discussions similaires

  1. Requête multi-tables :S
    Par plutonium719 dans le forum Développement
    Réponses: 4
    Dernier message: 12/03/2008, 16h41
  2. modifier des données dans une requête multi table
    Par Bluman dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 05/02/2008, 10h00
  3. PB requête multi-tables
    Par duchnok dans le forum Langage SQL
    Réponses: 1
    Dernier message: 04/01/2008, 12h25
  4. Requête multi-tables avec BDE
    Par Ptit_bouchon dans le forum Bases de données
    Réponses: 9
    Dernier message: 03/01/2008, 12h58
  5. problème de requête multi-table
    Par dergips dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 23/07/2007, 18h21

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