Bonjour,


J'ai un petit soucis dans mon mapping hibernate, qui me génère une jointure sur la mauvaise colonne.

Pour plus de facilité d'explication, voici mon cas :

1ere table 'Edition' :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
KTC_EDIT  (clé de la table)
...
KCD_TYPEED
2eme table 'Type edition', avec clé sur 2 colonnes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
KCD_TYPEED
KCD_LANGUE
LIBELLE
...
Ce que je souhaite : faire un mapping du coté de 'Edition' pour avoir la collection de 'Type Edition' (collection car le code langue n'est connu qu'au moment des requêtes).

J'ai donc fait la chose suivante dans mon mapping :

Edition.hbm.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
<set name="typeEditions" lazy="true" table="letyped" cascade="none">
        <key column="kcd_typeed" update="false" />
       <one-to-many class="com.xxx.edition.TypeEdition" />
</set>
Dans 'TypeEdition.hbm.xml' la relation n'est pas mappé.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
<class name="com.xxx.edition.TypeEdition" table="letyped">
   <composite-id>
      <key-property name="codeTypeEdition" column="kcd_typeed" type="java.lang.Integer"/>
      <key-property name="codeLangue" column="kcd_langue" type="java.lang.Integer"/>
   </composite-id>
 
   <property name="libelle" column="tg_typeed" type="java.lang.String" />
   [...]
</class>
Et dans mon dao, pour la requête :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
HibernateUtil.getSession().createCriteria(Edition.class)
[...]
criteria.createAlias("typeEditions", "typeEditions",Criteria.LEFT_JOIN);
criteria.add(Restrictions.eq("typeEditions.codeLangue",codeLangue));
[...]

Seulement, la requête générée tente de faire la jointure sur la mauvaise colonne de ma table Edition :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
from leedit this_
outer join letyped typeeditio1_ on this_.ktc_edit=typeeditio1_.kcd_typeed
Alors que j'aimerai avoir :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
from leedit this_
outer join letyped typeeditio1_ on this_.kcd_typeed=typeeditio1_.kcd_typeed

Je ne sais pas comment lui spécifier ça ?
Pouvez-vous m'aider?

Pour infos :
- je ne peux pas toucher au table, qu'au mapping
- j'utilise hibernate 3.2.6

Merci