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' :
2eme table 'Type edition', avec clé sur 2 colonnes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 KTC_EDIT (clé de la table) ... KCD_TYPEED
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 KCD_TYPEED KCD_LANGUE LIBELLE ...
J'ai donc fait la chose suivante dans mon mapping :
Edition.hbm.xml
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 <set name="typeEditions" lazy="true" table="letyped" cascade="none"> <key column="kcd_typeed" update="false" /> <one-to-many class="com.xxx.edition.TypeEdition" /> </set>
Et dans mon dao, pour la requête :
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>
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 :
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_.ktc_edit=typeeditio1_.kcd_typeed
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
Partager