PDA

View Full Version : [Java] mapping relazione uno a molti con hibernate


Abdujaparov
15-06-2009, 13:39
Ciao a tutti,
è una delle prime volte che mi trovo ad utilizzare hibernate ed ho un problema nella realizzazione del mapping di una relazione 1 a molti tra due tabelle.
La tabella TPS16_CONFIGURATION ha una relazione 1 a N con la tabella TPS25_CURRENCIES_DIFFMIN.
La tabella TPS25_CURRENCIES_DIFFMIN ha una chiave composta formata da questi due campi:

1) TPS25_CURRENCIES_DIFFMIN.TPS25_ISO_CURRENCY
2) TPS25_CURRENCIES_DIFFMIN.TPS16_ID

Il campo TPS25_CURRENCIES_DIFFMIN.TPS16_ID non è altro che il valore della chiave della tabella TPS16_CONFIGURATION. In particolare è il campo: TPS16_CONFIGURATION.TPS16_NAME.

Ho provato a fare in questo modo:

1) File mapping tabella TPS16_CONFIGURATION (file EConfiguration.hbm.xml)

1.a) Ho inserito un tag list in questo modo:

<list name="currenciesDiffMin" inverse="true" cascade="all-delete-orphan">
<key column="name"/>
<one-to-many class="com.intesasanpaolo.tps.model.ECurrenciesDiffmin"/>
</list>

Dove name è il nome del campo TPS16_NAME mappato sempre all'interno del file EConfiguration.hbm.xml.

2) Ho creato questo file di mapping (file ECurrenciesDiffMin.hbm.xml) per la tabella TPS25_CURRENCIES_DIFFMIN:

<hibernate-mapping>
<class name="com.intesasanpaolo.tps.model.ECurrenciesDiffmin"
table="TPS25_CURRENCIES_DIFFMIN" catalog="@CATALOG@" mutable="true">
<comment>Oggetto hibernate che mappa la tabella TPS25_CURRENCIES_DIFFMIN</comment>

<composite-id>
<key-many-to-one name="configuration" class="com.intesasanpaolo.tps.model.EConfiguration" column="name" ></key-many-to-one>
<key-property name="currency" type="string">
<column name="TPS25_ISO_CURRENCY"></column>
</key-property>
</composite-id>

<property name="diffMin" type="double">
<column name="TPS25_DIFF_MIN" not-null="false" />
</property>

</class>
</hibernate-mapping>

Ora In questo modo come dichiaro, all'interno della classe ECurrenciesDiffMin il riferimento alla classe EConfiguration (classe che mappa l'altra tabella)?

In questo modo credo ci siano degli errori ma non riesco a capire come, cosa e perchè sbaglio, qualcuno può aprirmi gli occhi?
Grazie, ciao ciao.