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 :

[JPQL] Question sur une requête


Sujet :

JPA Java

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 139
    Points : 50
    Points
    50
    Par défaut [JPQL] Question sur une requête
    Bonjour,

    J'ai un petit soucis sur une requête JPQL:
    Voici vite fait l'architecture des entités.

    Agence
    (n)
    l
    l
    l
    (1)
    Materiel (n) ---------- (1) LienMaterielPoste
    (1)
    l
    l
    l
    (n)
    ModelMateriel

    En gros, un materiel a:
    - un modele (@ManyToOne)
    - une agence (@ManyToOne)
    - un ensemble de liensMaterielPoste (@OneToMany)

    Je voudrais récupérer les matériels d'une agence et d'un modèle spécifique mais également ajouter une condition sur l'ensemble des liens (date de retrait inférieure à la date du jour). En SQL pas de soucis, mais en JPQL je n'obtient pas le résultat voulu.

    Voici ma méthode:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public List<Materiel> getAllMaterielsDispo(Agence a, ModeleMateriel m) {
           String jpql = "SELECT r FROM Materiel r " +
                         " join r.agence a" +
                         " join r.modele m " +
                         " join r.liensMaterielPoste liens " +
                         " where a.id=?1 and m.id=?2 and liens.dateRetrait<?3";
           Query query =              PersistanceUnit.getInstance().getEm().createQuery(jpql);
           query.setParameter(1, a.getId());
           query.setParameter(2, m.getId());
           query.setParameter(3, new java.util.Date());
           return query.getResultList();
        }
    Merci de m'aider.

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 139
    Points : 50
    Points
    50
    Par défaut
    J'ai l'impression que le problème viens du fait qu'un materiel peut avoir aucun lienMaterielPoste. Il faudrait que je fasse un "left outer join"...
    J'ai d'ailleurs ajouter une condition en plus; ça m'a l'air de marcher...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public List<Materiel> getAllMaterielsDispo(Agence a, ModeleMateriel m) {
           String jpql = "SELECT r FROM Materiel r " +
                         " join r.agence a" +
                         " join r.modele m " +
                         " left outer join r.liensMaterielPoste liens " +
                         " where a.id=?1 and m.id=?2 and (liens.id is null or liens.dateRetrait<?3)";
           Query query = PersistanceUnit.getInstance().getEm().createQuery(jpql);
           query.setParameter(1, a.getId());
           query.setParameter(2, m.getId());
           query.setParameter(3, new java.util.Date(),TemporalType.DATE);
           return query.getResultList();
        }

Discussions similaires

  1. question sur une requête délicate
    Par corro dans le forum Sybase
    Réponses: 2
    Dernier message: 17/08/2012, 16h09
  2. [JPQL] Question sur une requête avec héritage
    Par saveriu dans le forum JPA
    Réponses: 1
    Dernier message: 21/08/2010, 08h54
  3. [WD14] Question sur une requête
    Par Raptor92 dans le forum WinDev
    Réponses: 6
    Dernier message: 29/01/2010, 16h07
  4. [WD14] Question sur une requête
    Par Raptor92 dans le forum WinDev
    Réponses: 2
    Dernier message: 06/11/2009, 19h53
  5. Question pour une requête sur plusieurs tables/objets
    Par pontus21 dans le forum Hibernate
    Réponses: 54
    Dernier message: 01/06/2009, 18h37

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