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 :

Criteria avec jointure externe sur plusieurs colonnes


Sujet :

Persistance des données Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2013
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Criteria avec jointure externe sur plusieurs colonnes
    Bonjour,

    J'essaye actuellement de reprendre une application datant de plusieurs années.
    Je ne peux pas toucher à la structure de mes tables, ni a mon mapping.
    Je sais que ma structure ne ressemble à rien mais j'ai pas le choix.

    J'ai une structure en étoile, mes tables on toutes des colonnes communes pour définir un même élément (ID_INDIVIDU, ID_ENTREPRISE).
    Mon mapping ne tiens pas compte des relations les objets n'ont pas forcément de liens entre eux.
    ex : en rouge les champs de définition de la PK de la table
    table ARRIVER_INDIVIDU
    ID_INDIVIDU (string), ID_ENTREPRISE(int), DATE_ENTREE (date)

    table INDIVIDU
    ID_INDIVIDU (string), ID_ENTREPRISE(int), DATE_EFFET (date), NOM (String), PRENOM (String)

    table POSTE_FONCTION
    ID_POSTE(int), ID_INDIVIDU (string), ID_ENTREPRISE(int), DATE_EFFET (horodate)

    table FONCTION
    ID_FONCTION(int), ID_POSTE(int), DATE_EFFET(date), LIBELLE_POSTE(String)

    Les tables ARRIVER_INDIVIDU, INDIVIDU et POSTE_FONCTION n'ont pas de relation entre elles.
    Les tables POSTE_FONCTION et FONCTION sont liées par l'ID_POSTE (FK de poste fonction).
    Pour 1 ID_POSTE je peux avoir de 1 à n ID_FONCTION.

    Pour toutes mes requêtes je doit faire des jointure entre mes tables sur les colonnes ID_INDIVIDU et ID_ENTREPRISE.

    J'essaye d'utiliser les criteria pour récupérer ARRIVER_INDIVIDU.DATE_ENTREE, INDIVIDU.NOM, INDIVIDU.PRENOM, POSTE_FONCTION.ID_ENTREPRISE, FONCTION.LIBELLE_POSTE en une seule fois.
    j'ai un objet individuObj qui possède tout les champs associés a ces données et qui est mappé sur la table INDIVIDU

    Actuellement je fais plusieurs appel et je remplis mon objet petit a petit.
    j'ai essaye plusieurs écritures d'alias et jointure mais je n'arrive pas à retranscrire ma requête SQL en criteria

    Si quelqu'un pouvais me donner des piste.


    MERCI.
    PS. désolé pour l'orthographe et si vous avez besoin de précision n’hésitais pas.

  2. #2
    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
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Peut-on voir ton sql et tes classes de mapping avec le criteria que tu as essayé de faire?

    A+.

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2013
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    merci de prendre le temps de regarder mon problème.

    Je ne peut pas envoyer mon mapping et mes classe (je sais que c'est pas terrible mais j'ai pas le choix).

    Je peux qu'envoyer des exemple de ce qui est fait.
    Au niveau mapping j'ai des tables mappées en hbm (pas d'annotations) avec une clef de type :
    <composite-id>
    <key-property name="IDID_IDPERSONNE" column="IDID_IDPERSONNE" type="java.lang.String" length="10"/>
    <key-property name="DATE_EFFET" column="DATE_EFFET" type="java.util.Date" />
    <key-property name="DATE_FLU" column="DATE_FLU" type="java.util.Date" />
    <key-property name="CODE_SI" column="CODE_SI" type="java.lang.Integer" length="1" />
    </composite-id>
    plus les colonnes de mes tables.

    J'ai d'autres tables qui n'ont pas le même style de clef mais dans toutes on retrouve le IDID_IDPERSONNE et le CODE_SI.

    Au niveau classe j'en ai beaucoup qui héritent d'une classe "clef" qui contiens mes 4 propriété et dans ma classe je définis mes autres propriétés.

    Pour trouver une ligne à une date donnée, on fais des requêtes de type
    SELECT *
    FROM tableA A
    INNER JOIN tableB B ON A.IDPERSONNE = B.IDPERSONNE AND A.CODE_SI = B.CODE_SI
    WHERE A.DATE_EFFET >= :date
    AND A.DATE_EFFET = (SELECT MAX(DATE_EFFET)
    FROM tableA
    WHERE IDID_IDPERSONNE = A.IDID_IDPERSONNE
    AND CODE_SI = A.CODE_SI
    AND DATE_FLU = (SELECT MAX(DATE_FLU)
    FROM tableA WHERE IDID_IDPERSONNE = A.IDID_IDPERSONNE
    AND CODE_SI = A.CODE_SI
    AND DATE_EFFET = A.DATE_EFFET))
    AND B.DATE_EFFET >= :date
    AND B.DATE_EFFET = (SELECT MAX(DATE_EFFET)
    FROM tableB
    WHERE IDID_IDPERSONNE = B.IDID_IDPERSONNE
    AND CODE_SI = B.CODE_SI
    AND DATE_FLU = (SELECT MAX(DATE_FLU)
    FROM tableB WHERE IDID_IDPERSONNE = B.IDID_IDPERSONNE
    AND CODE_SI = B.CODE_SI
    AND DATE_EFFET = B.DATE_EFFET))
    AND A.IDPERSONNE = :idPersonne
    AND A.CODE_SI = :codeSi

    J'essaye maintenant de faire passer le projet en criteria (toutes les requêtes du projet sont en namedQueries sql dans les hbm ) même les plus simples....

    J'essaye donc de faire une migration en criteria mais je sais pas comment retranscrire mes requêtes avec :
    INNER JOIN tableB B ON A.IDPERSONNE = B.IDPERSONNE AND A.CODE_SI = B.CODE_SI

    Je suis sur un autre problème actuellement donc je n'ai plus les criteria que j'ai essayer de faire en tête mais je sais que j'ai essayé de créé des alias et des jointures et ça marchai pas. (les alias ou les noms de colonnes n'étaient pas reconnu).

    Je vais essayer de faire un mapping exemple avec les classes associées.

    MERCI.

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2013
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Je viens de trouver ce post : http://stackoverflow.com/questions/7...ed-association

    Je pense donc que ce que j'essaye de faire n'est pas possible avec mon architecture de BDD.

    Merci à ceux qui se sont penché sur mon problème.

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

Discussions similaires

  1. Requete SQL jointure externe sur plusieurs tables
    Par mattmax dans le forum Développement
    Réponses: 4
    Dernier message: 28/12/2010, 10h07
  2. Problème avec foreign keys sur plusieurs colonnes
    Par draghysck dans le forum Requêtes
    Réponses: 1
    Dernier message: 12/10/2009, 14h27
  3. Grid avec un header sur plusieurs colonnes
    Par Reeter dans le forum wxPython
    Réponses: 2
    Dernier message: 06/10/2009, 23h49
  4. Réponses: 3
    Dernier message: 02/08/2007, 16h07
  5. Réponses: 2
    Dernier message: 11/01/2007, 12h56

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