Table INSTRUMENTS
-ID_INSTRUMENT (PK)
-CODE
-...

Table FUND_INDEXES
-ID_INSTRUMENT (PK1)
-TYPE (PK2)
-RECORD_DATE (PK3)
-ID_INDEX

Table INDEXES

-ID_INDEX
-...

Un instrument (INSTRUMENTS) est lié à un ou plusieurs index (INDEXES) dans la table FUND_INDEXES.

J'essaie de faire la requête suivante (testée sous Oracle):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
select ins.CODE
from INSTRUMENTS ins
join FUND_INDEXES fi on fi.ID_INSTRUMENT = ins.ID_INSTRUMENT
join INDEX ind on ind.ID_INDEX = fi.ID_INDEX
where fi.ID_INDEX=357
soit en langage Hibernate :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
select ins.code
from Instrument ins
join ins.indexes as ind
where ind.index.idIndex=357
mais rien à faire, le mapping ne fonctionne pas Error creating bean... à cause du ind.index.idIndex

Voilà comment est construit indexes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
     <map name="indexes" table="FUND_INDEXES">
     	<key column="ID_INSTRUMENT"/>
 		<map-key type="string" formula="TYPE"/>
     	<composite-element class="FundIndex">
     		<parent name="instrument"/>
     		<many-to-one name="index" class="Index" column="ID_INDEX"/>
     		<property name="type" column="TYPE" type="string"/>
			<property name="recordDate" column="RECORD_DATE" type="date"/>
     	</composite-element>
     </map>
Merci d'avance pour votre aide (j'y ai passé la journée...)

PS : je ne détaille pas le mapping des classes Index et Instrument qui fonctionnent très bien par ailleurs; la nouveauté est de faire fonctionner FundIndex