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 :

Difficulté pour transcrire une requete SQL


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Par défaut Difficulté pour transcrire une requete SQL
    Bonjour,

    J'aimerais faire la requête SQL suivante en JPA mais je rencontre quelques soucis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT FL.* FROM CO_FACTURE_DEBITEUR FL LEFT JOIN CO_FACTURE_DEBITEUR F ON F.CO_FACTURE_INTERNE_LIEE_ID = FL.ID
    WHERE FL.CO_TYPE_FACTURE_CI = 'DEBITEUR_INTERNE' AND F.ID IS NULL
    J'en suis ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT fl FROM FactureDebiteur fl LEFT JOIN fl. ??? WHERE fl.typeFactureCi = :typeFactureInt AND f.id IS NULL
    Mais sur la partie rouge, je ne vois pas comment faire l'équivalent de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LEFT JOIN CO_FACTURE_DEBITEUR F ON F.CO_FACTURE_INTERNE_LIEE_ID=FL.ID
    Qqun peut-il m'aider svp ?

    Merci pour votre 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
    Billets dans le blog
    1
    Par défaut
    Ça dépend du mapping de l'entity mais en gros, ça ressemble à ceci
    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
     
    public class CoFactureDebiteur
    {
       private Integer id;
       private ...
       private CoFactureDebiteur coFactureDebiteurLiee;
     
       @ManyToOne
       @JoinColumn("UID_FACTURE_LIEE")
       public CoFactureDebiteur getCoFactureDebiteurLiee()
       {
          this.coFactureDebiteurLiee;
       }
       ...
    }
     
    entityManager.createQuery("select a from CoFactureDebiteur a where a.coTypeFactureCi = 'DEBITEUR_INTERNE' and a.coFactureLiee.id is null");
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Par défaut
    Salut,

    Voici le mappage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    @Table(name = "dbo.CO_FACTURE_DEBITEUR")
    public class FactureDebiteur
     
     ....
     
    @JoinColumn(name = "CO_FACTURE_INTERNE_LIEE_ID")
    private FactureDebiteur factureInterneLiee;
    Ceci ne fonctionne pas :
    entityManager.createQuery("select a from CoFactureDebiteur a where a.coTypeFactureCi = 'DEBITEUR_INTERNE' and a.coFactureLiee.id is null");
    Il faudrait pouvoir le faire à l'envers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a.coFactureLiee.id is null
    "a" correspondrait à la facture liée et "b" à la facture parente et c'est "a.id" qui devrait être null

    Je ne sais pas si tu vois ce que je veux dire ?

    Merci pour ton aide

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Et ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select fl
    from CoFactureDebiteur fl left join  fl.factureInterneLiee f where fl.coTypeFactureCi = 'DEBITEUR_INTERNE' and f.id is null;

  5. #5
    Membre éclairé
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Par défaut
    Non ça ne marche pas. C'est toujours le même soucis, il faudrait pouvoir inverser le test.

    J'ai essayé ceci mais toujours en vain car je n'ai aucun enregistrement trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT fl FROM FactureDebiteur fl LEFT JOIN f.factureInterneLiee fl WHERE fl.typeFactureCi = :typeFactureInt AND f.id IS NULL
    La requête SQL étant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT FL.* FROM CO_FACTURE_DEBITEUR FL LEFT JOIN CO_FACTURE_DEBITEUR F ON F.CO_FACTURE_INTERNE_LIEE_ID = FL.ID
    WHERE FL.CO_TYPE_FACTURE_CI = 'DEBITEUR_INTERNE' AND F.ID IS NULL
    Merci les gars pour votre aide

  6. #6
    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
    Billets dans le blog
    1
    Par défaut
    Peux-tu poster le code de l'entity en entier svp ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Citation Envoyé par doons Voir le message
    J'ai essayé ceci mais toujours en vain car je n'ai aucun enregistrement trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT fl FROM FactureDebiteur fl LEFT JOIN f.factureInterneLiee fl WHERE fl.typeFactureCi = :typeFactureInt AND f.id IS NULL
    Tu devrais avoir une exception avec ce code puisque tes alias ne sont pas bon.
    Ça doit être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT fl FROM FactureDebiteur fl LEFT JOIN fl.factureInterneLiee f WHERE fl.typeFactureCi = :typeFactureInt AND f.id IS NULL
    A+.

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

Discussions similaires

  1. demande d'aide pour comprendre une requete SQL
    Par Halloula dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/04/2008, 18h14
  2. aide pour formuler une requete sql
    Par viny dans le forum PostgreSQL
    Réponses: 11
    Dernier message: 01/03/2008, 12h20
  3. aide pour créer une requete sql
    Par DonKnacki dans le forum Langage SQL
    Réponses: 11
    Dernier message: 07/02/2008, 18h17
  4. Difficulté pour réaliser une requete peu complexe :/
    Par DanaX dans le forum Langage SQL
    Réponses: 9
    Dernier message: 16/05/2007, 13h55
  5. En difficulté pour faire une requete
    Par Fonzy17 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 21/03/2005, 10h56

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