2010-09-17 20 views
0

Je me demande s'il est possible de définir Set dans le mapping Hibernate de telle sorte, cet élément préciserait colonne non dans l'original (FOO) table, mais rejoint un (BAR). Disons que nous avons un peu FooContainer.hbm.xml, qui contient Set de Foo objets:Mise en veille prolongée <set> clé de table jointe

<set ...> 
    <key column="COLUMN_FROM_BAR" /> 
    <one-to-many class="xyz.Foo" /> 
</set> 

Ici FOO a FK à BAR (FOO.BAR_ID), rejoignant ainsi est fait par élément Foo.hbm. xml:

<many-to-one class="xyz.Bar" fetch="join" column="BAR_ID" foreign-key="barId" ... /> 

qui conduit à joint FOO-BAR sélectionner chaque fois xyz.Foo est extraite.

Le problème est que lorsque l'état de produit Set aller chercher select est quelque chose comme:

... WHERE _FOO_0.COLUMN_FROM_BAR = ? 

quand on est désiré:

... WHERE _BAR_0.COLUMN_FROM_BAR = ? 
+1

cela n'a pas de sens: il n'y aurait pas de lien entre les deux tables. –

+0

Il y a un lien dans DB (références FOO BAR) et dans hbm est défini dans . Les détails de cette relation sont manquants car ils ne sont pas liés à la question. – Ralkie

Répondre

1

a trouvé la réponse à Java Persistence with Hibernate (page 296). Trick est autre paramètre table de jeu (BAR) de la classe cible (Foo):

<set table="BAR" ...> 
    <key column="COLUMN_FROM_BAR" /> 
    <many-to-many 
     class="xyz.Foo" 
     column="BAR_ID" 
     unique="true" 
     /> 
    </set>