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

Hibernate Java Discussion :

Jointure entre deux tables [Criteria]


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Par défaut Jointure entre deux tables
    Bonjour,

    Je possède deux tables : PERPHY et DENOMPHY. PERPHY a pour clé primaire IDITIP que DENOMPHY a pour clé étrangère, permettant une jointure entre les deux. La relation entre les deux est de type (1; 1+) , 1+ signifiant au moins une instance DENOMPHY pour une seule de PERPHY. Cela se traduit par une relation many-to-one dans la configuration du fichier Denomphy.hbm.xml.

    Parmi les champs de PERPHY, il y a ACTIF et ETAT.

    Parmi ceux de DENOMPHY, il y a IMG et NOM.

    Je voudrais programmer avec Criteria la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT * FROM PERPHY P, DENOMPHY D
    WHERE
    D.IDITIP = P.IDITIP AND
    P.ACTIF = 1 AND
    P.ETAT IN ('1', '2', '5') AND
    D.IMG = 1 AND
    D.NOM LIKE 'DEP%'
    Alors, en Java, je code ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    	Criteria crit = session.createCriteria(Denomphy.class);
     
    	crit.setFetchMode("Perphy", FetchMode.JOIN);
     
    	crit.add(Expression.eq(Denomphy.C_IMG, "1"));
     
    	crit.add(Expression.like(Denomphy.C_NOM, "DEP%"));
     
    	crit.add(Expression.eq(Perphy.C_ACTIF, "1"));
     
    	String tab_CDETAT[] = {"1", "2", "7"}; 
    	crit.add(Expression.in(Perphy.C_ETAT, tab_CDETAT));
    Malheureusement, j'ai une exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    org.hibernate.QueryException: could not resolve property: ACTIF of: metier.Denomphy
    Je comprends bien que ACTIF n'appartienne pas à la table DENOMPHY... Comment pourrais-je solutionner ce problème ?

    Merci par avance pour votre aide.



    Note : la classe Denomphy.java contient l'attribut PERPHY :


  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Par défaut
    Trouvé !

    Après des heures de recherche j'ai fini par trouver une solution en invoquant la méthode createAlias.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    	crit.setFetchMode("Perphy", FetchMode.JOIN);
     
    	crit.add(Expression.eq(Denomphy.C_IMG, "1"));
     
    	crit.add(Expression.like(Denomphy.C_NOM, "DEP%"));
     
    	crit.createAlias("perphy", "P");
     
    	crit.add(Expression.eq("P." + Perphy.C_ACTIF, "1"));
     
    	String tab_CDETAT[] = {"1", "2", "7"};
    	crit.add(Expression.in("P." + Perphy.C_ETAT, tab_CDETAT));

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

Discussions similaires

  1. Jointure entre deux tables ?
    Par spirit69 dans le forum Access
    Réponses: 2
    Dernier message: 05/12/2006, 20h21
  2. jointure entre deux tables mysql
    Par Invité dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 23/04/2006, 20h08
  3. [MySQL] Jointure entre deux tables
    Par Flushovsky dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 03/10/2005, 18h55
  4. PROBLEME DE JOINTURE ENTRE DEUX TABLE
    Par DarkMax dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/01/2005, 15h11
  5. Jointure entre deux tables et résultat
    Par Asdorve dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/06/2004, 14h50

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