Mapping et récupération de données dans table externe
Bonjour à tous !!
J'ai un petit problème avec les mappings hbm.
J'ai une table A et une table B :
A
aid
bid
cid
langabrev
aname
B
bid
bname
La table A contient un identifiant pour associer une ligne de la table B (bid).
J'aimerai maintenant récupérer la valeur bname de la table B dans mon mapping de la table A.
J'ai tenté de le faire avec une balise "join" :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.test">
<class name="AVO" table="A">
<id name="id" column="aid" unsaved-value="0">
<generator class="native"/>
</id>
<property name="bid" column="bid" />
<property name="langabrev" column="langabrev" />
<property name="name" column="medianame" />
<join table="b">
<key column="bid" property-ref="bid" />
<property name="bname" type="string">
</property>
</join>
</class>
</hibernate-mapping> |
mais rien n'y fait... j'ai pu voir dans la doc que "property-ref" permettait de faire référence à une clé autre que la clé primaire de ma classe AVO, mais dans la requête, il continue à me faire un left join b on a.aid = b.bid, alors que la requête devrai être left join b on a.bid = b.bid
Dans le même ordre d'idée, j'ai une table C qui est définie comme suivant :
C
cid
langabrev
cname
Et j'aimerai pouvoir récupérer, toujours dans mon mapping AVO, la valeur cname en faisant référence au cid (même problème que ci-dessus) et en faisant également référence au langabrev de la table A. J'ai tenté avec une "formula" mais là encore, pas plus de succès... peut-être utiliser une clé composée en faisant référence aux 2 champs de la table A, mais comme je n'arrive déjà pas à faire référence à 1 seul champ (problème du départ) j'arrive encore moins à le faire sur 2 champs...
Si quelqu'un pouvait bien m'éclairer sur les références vers des tables externes, la manière de les mettre en oeuvre, ça me serait d'une grande aide.
D'avance merci pour vos suggestions.
Cordialement