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 :

[Hibernate 3] [Criteria] Faire une jointure avec Criteria


Sujet :

Hibernate Java

  1. #21
    Membre habitué Avatar de bouchette63
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Points : 187
    Points
    187
    Par défaut
    Merci pour ton aide fr1man,

    Mais malheureusement c'est la même chose, il ne prend pas en compte ma jointure sur la table DbAttribut
    J'ai donc la même erreur générée.

    Je ne vois pas trop quoi faire pour résoudre ce problème ?
    Réaliser deux jointures successives avec Criteria est-il possible ?
    (dans mon cas DbDocumentIndexe -> DbValeurAttribut -> DbAttribut)

    Merci pour votre aide
    "Tout m'afflige, et me nuit, et conspire à me nuire" Racine

  2. #22
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Tu peux redonner tes mappings, je ne les trouve plus ?

  3. #23
    Membre habitué Avatar de bouchette63
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Points : 187
    Points
    187
    Par défaut
    Voici mes mapping :

    DbDocumentIndexe
    Code XML : 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
    <hibernate-mapping>
    	<class name="database.mapping.DbDocumentIndexe" table="DBDOCUMENTINDEXE">
     
    		<id column="NCLEDOCUMENTINDEXE" name="id" type="java.lang.Long">
    			<generator class="native"/>
    		</id>
     
    		<many-to-one name="dbTypeDocument" column="NCLETYPEDOCUMENT" class="database.mapping.DbTypeDocument"/>
     
    		<set name="dbValeurAttributs" inverse="true" cascade="delete">
    			<key column="NCLEDOCUMENTINDEXE" />
    			<one-to-many class="database.mapping.DbValeurAttribut"/>
    		</set>
     
    	</class>
    </hibernate-mapping>
    DbValeurAttribut
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <hibernate-mapping>
    	<class name="database.mapping.DbValeurAttribut" table="DBVALEURATTRIBUT">
     
    		<composite-id>
    			<key-many-to-one name="dbDocumentIndexe" column="NCLEDOCUMENTINDEXE" class="database.mapping.DbDocumentIndexe"/>
     
    			<key-many-to-one name="dbAttribut" column="NCLEATTRIBUT"
    				class="database.mapping.DbAttribut"/>
     
    		</composite-id>
     
    		<property column="SVALEUR" length="100" name="valeur" not-null="true" type="java.lang.String"/>
     
    	</class>
    </hibernate-mapping>
    DbAttribut
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <hibernate-mapping>
    	<class name="database.mapping.DbAttribut" table="DBATTRIBUT">
    		<id column="NCLEATTRIBUT" name="id" type="java.lang.Long">
    			<generator class="assigned" />
    		</id>
     
    		<property column="SLIBELLEATTRIBUT" length="100" name="libelleAttribut" not-null="true" type="java.lang.String" />
     
    		<set name="dbValeurAttributs" inverse="true">
    			<key column="NCLEATTRIBUT" />
    			<one-to-many class="database.mapping.DbValeurAttribut" />
    		</set>
     
    	</class>
    </hibernate-mapping>

    Merci pour votre aide
    "Tout m'afflige, et me nuit, et conspire à me nuire" Racine

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

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    C'est tout à fait faisable en HQL.
    En ce qui concerne Criteria, je ne suis pas certain, mais je ne maitrise pas Criteria à fond.

  5. #25
    Membre habitué Avatar de bouchette63
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Points : 187
    Points
    187
    Par défaut
    J'ai un peu farfouillé et j'ai trouvé un post qui confirme qu'avec une requête Criteria, cela fonctionne : ici
    Donc je ne comprend pas trop pourquoi il ne prend pas en compte cette ligne dans ma requête (ligne violet)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    laList = lSession.createCriteria(DbDocumentIndexe.class)
       .add(Restrictions.in("dbTypeDocument.id", idsTypeDocument))
       .createCriteria("dbValeurAttributs", "DbVal")
          .add(Restrictions.eq("DbVal.valeur", lsValeur))
          .createCriteria("DbVal.dbAttribut", "DbAtt")
    	  .add(Restrictions.eq("DbAtt.libelleAttribut", lsNomCritereRecherche));
    La solution HQL ne me convient pas trop, car c'est une requête dynamique.

    Si quelqu'un à une solution, merci
    "Tout m'afflige, et me nuit, et conspire à me nuire" Racine

  6. #26
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Le problème est que dbAttribut n'est pas un attribut de dbValeurAttributs, donc ça ne m'étonne pas que ça ne marche pas.

  7. #27
    Membre habitué Avatar de bouchette63
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Points : 187
    Points
    187
    Par défaut
    Donc dans mon cas, ce n'est pas possible de réaliser ce type de requêtes (avec deux jointure successives) au moyen de l'API Criteria ?
    "Tout m'afflige, et me nuit, et conspire à me nuire" Racine

  8. #28
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Ben avec ce type de relation, je ne vois pas trop comment faire avec Criteria.

  9. #29
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    DbVal est un objet et non une propriété ...

    si tu veux testé la valeur de DbVal.machin tu vas devoir passer par createAlias

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    dbObject.createAlias.("dbObjectName","anAlias");
    dbObject.criteria.add(
      Expression.in(Restrictions.eq("anAlias.libelleAttribut", lsNomCritereRecherche)
     )

  10. #30
    Membre habitué Avatar de bouchette63
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Points : 187
    Points
    187
    Par défaut
    Merci pour ton aide Alexandre, mais malheureusement je rencontre toujours la même erreur avec createAlias. C'est à dire que la jointure ne s'effectue pas pour la ligne violette :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    laList = lSession.createCriteria(DbDocumentIndexe.class)
       .add(Restrictions.in("dbTypeDocument.id", idsTypeDocument))
       .createAlias("dbValeurAttributs", "DbVal")
          .add(Restrictions.eq("DbVal.valeur", lsValeur))
          .createAlias("DbVal.dbAttribut", "DbAtt")
    	  .add(Restrictions.eq("DbAtt.libelleAttribut", lsNomCritereRecherche));
    Je suis à cours d'idées, si quelqu'un à une solution ?

    Merci
    "Tout m'afflige, et me nuit, et conspire à me nuire" Racine

  11. #31
    En attente de confirmation mail
    Inscrit en
    Mai 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 3
    Points : 3
    Points
    3
    Par défaut hibernatetemplate+ criteria
    au fait , j'ai une tables (Vp) résultante d'une jointure de 3 class (Vues , Role , Attribut), au fait je veux créer une méthode qui me retourne la Vp correspondante pour un tuple(vue, role, attribut) précis la question comment y est faire avec hibernatetemplate + hql
    si quelqu'un puisse me répondre ?

Discussions similaires

  1. Comment faire une jointure externe en Hibernate ?
    Par Battosaiii dans le forum Hibernate
    Réponses: 4
    Dernier message: 01/09/2011, 14h37
  2. Faire une jointure avec tmap
    Par tamatifa dans le forum Développement de jobs
    Réponses: 7
    Dernier message: 19/05/2009, 12h37
  3. creer un order sur une fonction avec criteria
    Par maouth dans le forum Hibernate
    Réponses: 12
    Dernier message: 09/09/2008, 15h57
  4. API Criteria, charger une jointure, problème bizarre
    Par TiMiD dans le forum Hibernate
    Réponses: 2
    Dernier message: 17/10/2007, 17h06
  5. [Hibernate] Faire une requête avec relation NN
    Par n@n¤u dans le forum Hibernate
    Réponses: 20
    Dernier message: 25/07/2006, 10h39

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