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 :

champ invalide dans la requête JPQL


Sujet :

JPA Java

  1. #1
    Membre habitué
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Points : 127
    Points
    127
    Par défaut champ invalide dans la requête JPQL
    Bonjour,

    Je veux afficher tous les checkLists qui sont répondus et non pas encore répondu (la réponse des checkLists se trouve dans la table ResponsesCheckLists) selon les paramètres suivants : idequipement et idMission.

    pour bien expliquer le résultat de la requete. il faut avoir tous les checkLists qui sont répondus et qui n'y ont pas encore répondu en basant sur l'idEquipement (par exemple : 1) et idMission(par exemple:2) indiqués par utilisateur.

    J'ai alors les entités suivantes :

    Entité equipements ; contient idEquipement, Name,..

    Entité checkLists: contient idCheckLists, recommandation, idEquipement

    Entité ResponseCheckLists: contient idResponseCheckLists, idCheckLists ,date, Response, idMission.

    Alors, il faut faire le jounture entre les 3 Entités.

    Voici ma requête en JPQL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @Query("SELECT check , resp , eq FROM Equipements eq INNER JOIN CheckLists check ON eq.idEquipements = check.equipements.idEquipements"
                + " INNER JOIN ResponsesCheckLists resp ON check.idCheckLists=resp.CheckLts.idCheckLists AND resp.Respmission.idMission = :idmiss AND eq.idEquipements = :idEqp ")
        public List<ResponsesCheckLists> ListCheckListsNonRepondu(@Param("idEqp") long idEqp, @Param("idmiss") long idmiss);
    Cette requête affiche les erreurs suivants:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    1-Caused by: java.lang.IllegalStateException: No data type for node: org.hibernate.hql.internal.ast.tree.IdentNode +-[IDENT] IdentNode: 'check' {originalText=check}
    2- antlr.SemanticException: Path expected for join!
    Note: le check est l'alias de l'entité "CheckLists", j'ai pas compris pourquoi il considère comme une colonne vide ?

    J'en sais pas comment corriger ces problèmes.

    merci de m'aider mes amis

  2. #2
    Membre habitué
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Points : 127
    Points
    127
    Par défaut
    Bonsoir,

    je cherche comment transformer cette requête SQL en requête JPQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT * FROM equipements eq
     LEFT JOIN check_lists checks
     ON eq.id_equipements = checks.equipements_id 
    LEFT JOIN responses_check_lists resp 
    ON checks.id_check_lists = resp.check_lists_id
     AND resp.missions_id = 15 
    AND eq.id_equipements = 1 
    ORDER BY checks.id_check_lists
    Merci;

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