Hibernate 3 one-to-many relationship mapping


P

Piotre Ugrumov

Hi,
I have this 2 tables:


TABLE TPS16_CONFIGURATION
( **TPS16_NAME**, TPS16_VALID_FROM_DATE, TPS16_OPERATING_RANGE_HI,
TPS16_OPERATING_RANGE_LO,
TPS16_MAX_OPERATING_DELTA, TPS16_TIME_GRID_PROTOTYPE)



TPS25_CURRENCIES_DIFFMIN
( **TPS16_ID, TPS25_ISO_CURRENCY**, TPS25_DIFF_MIN
)


I signed with * keys of the tables.
There is a foreign key in the table TPS25_CURRENCIES_DIFFMIN in fact
TPS16_ID refers to TPS16_CONFIGURATION(TPS16_NAME).

Now I have a problem of mapping.
The object EConfiguration maps the table TPS16_CONFIGURATION in this
way:

<?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>
<class name="com.intesasanpaolo.tps.model.EConfiguration"
table="TPS16_CONFIGURATION" catalog="@[email protected]" mutable="true">
<comment></comment>
<id name="name" type="string" column="TPS16_NAME"
access="field">
</id>

<property name="validFrom" type="java.util.Date">
<column name="TPS16_VALID_FROM_DATE" not-null="false" />
</property>

<property name="operatingRangeHigh" type="java.math.BigDecimal">
<column name="TPS16_OPERATING_RANGE_HI" not-null="false" />
</property>

<property name="operatingRangeLow" type="java.math.BigDecimal">
<column name="TPS16_OPERATING_RANGE_LO" not-null="false" />
</property>

<property name="maxOperatingDelta" type="java.math.BigDecimal">
<column name="TPS16_MAX_OPERATING_DELTA" not-null="false" />
</property>

<many-to-one name="timeGridPrototype"
column="TPS16_TIME_GRID_PROTOTYPE"
unique="false" not-null="false" fetch="join" cascade="all">
</many-to-one>

<list name="internalPortfolios" cascade="all"
table="TPS17_INTERNAL_PORTFOLIO" catalog="@[email protected]" lazy="false">
<key column="TPS16_ID"/>
<index column="TPS16_IDX"/>
<element column="TPS17_NAME" type="string"/>
</list>

<list name="externalPortfolios" cascade="all"
table="TPS18_EXTERNAL_PORTFOLIO" catalog="@[email protected]" lazy="false">
<key column="TPS16_ID"/>
<index column="TPS16_IDX"/>
<element column="TPS18_NAME" type="string"/>
</list>

<list name="internalCounterparts" cascade="all"
table="TPS19_INTERNAL_COUNTERPART" catalog="@[email protected]" lazy="false">
<key column="TPS16_ID"/>
<index column="TPS16_IDX"/>
<element column="TPS19_NAME" type="string"/>
</list>

<list name="externalCounterparts" cascade="all"
table="TPS20_EXTERNAL_COUNTERPART" catalog="@[email protected]" lazy="false">
<key column="TPS16_ID"/>
<index column="TPS16_IDX"/>
<element column="TPS20_NAME" type="string"/>
</list>

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

</class>
</hibernate-mapping>



The object ECurrenciesDiffmin maps the table TPS25_CURRENCIES_DIFFMIN
in this way:

<?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>
<class name="com.intesasanpaolo.tps.model.ECurrenciesDiffmin"
table="TPS25_CURRENCIES_DIFFMIN" catalog="@[email protected]" mutable="true">
<comment>Oggetto hibernate che mappa la tabella
TPS25_CURRENCIES_DIFFMIN</comment>

<composite-id>
<key-many-to-one name="configuration" column="TPS16_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>


So I have the classes that maps the table in this way:


public class EConfiguration {
protected String name;
private Date validFrom;
private ETimeGridConfiguration timeGridPrototype;
private List externalPortfolios;
private List internalPortfolios;
private List externalCounterparts;
private List internalCounterparts;
private BigDecimal operatingRangeHigh;
private BigDecimal operatingRangeLow;
private BigDecimal maxOperatingDelta;
private Set currenciesDiffMin;


public Set getCurrenciesDiffMin() {
return currenciesDiffMin;
}
public void setCurrenciesDiffMin(Set currenciesDiffMin) {
this.currenciesDiffMin = currenciesDiffMin;
}
protected EConfiguration() {}
public EConfiguration(String name) {
this.name = name;
}
/**
* Configuration name
* @return The name of the configuration
*/
public String getName() {
return name;
}
/**
* Validity date
* @return The first date for which this configuration is valid
*/
public Date getValidFrom() {
return validFrom;
}
public void setValidFrom(Date validFrom) {
this.validFrom = validFrom;
}
/**
* Time grid prototype
* @return A {@link ETimeGridConfiguration} object
*/
public ETimeGridConfiguration getTimeGridPrototype() {
return timeGridPrototype;
}
public void setTimeGridPrototype(ETimeGridConfiguration
timeGridPrototype) {
this.timeGridPrototype = timeGridPrototype;
}
/**
* External deal portfolios that must be used for this hedging
process
* @return A List of String representing the names of the portfolios
*/
public List getExternalPortfolios() {
return externalPortfolios;
}
public void setExternalPortfolios(List externalPortfolios) {
this.externalPortfolios = externalPortfolios;
}
/**
* Internal deal portfolios that must be hedged by this hedging
process
* @return A List of String representing the names of the portfolios
*/
public List getInternalPortfolios() {
return internalPortfolios;
}
public void setInternalPortfolios(List internalPortfolios) {
this.internalPortfolios = internalPortfolios;
}
/**
* External deal counterparts that must be used for this hedging
process
* @return A List of String representing the names of the
counterparts
*/
public List getExternalCounterparts() {
return externalCounterparts;
}
public void setExternalCounterparts(List externalCounterparts) {
this.externalCounterparts = externalCounterparts;
}
/**
* Internal deal counterparts that must be hedged by this hedging
process
* @return A List of String representing the names of the
counterparts
*/
public List getInternalCounterparts() {
return internalCounterparts;
}
public void setInternalCounterparts(List internalCounterparts) {
this.internalCounterparts = internalCounterparts;
}
/**
* High limit of hedging ratio
* @return A BigDecimal representing a hedge/risk ratio
*/
public BigDecimal getOperatingRangeHigh() {
return operatingRangeHigh;
}
public void setOperatingRangeHigh(BigDecimal operatingRangeHigh) {
this.operatingRangeHigh = operatingRangeHigh;
}
/**
* Low limit of hedging ratio
* @return A BigDecimal representing a hedge/risk ratio
*/
public BigDecimal getOperatingRangeLow() {
return operatingRangeLow;
}
public void setOperatingRangeLow(BigDecimal operatingRangeLow) {
this.operatingRangeLow = operatingRangeLow;
}
/**
* Absolute value of the maximum risk amount that can exceed hedging
for every time bucket
* @return A BigDecimal representing an amount
*/
public BigDecimal getMaxOperatingDelta() {
return maxOperatingDelta;
}
public void setMaxOperatingDelta(BigDecimal maxOperatingDelta) {
this.maxOperatingDelta = maxOperatingDelta;
}
public void setName(String name) {
this.name = name;
}
}



and


public class ECurrenciesDiffmin {

private EConfiguration configuration;
private String currency;
private double diffMin;

public ECurrenciesDiffmin() {
super();
}

public ECurrenciesDiffmin(EConfiguration configuration, String
currency, double diffMin) {
super();
this.configuration = configuration;
this.currency = currency;
this.diffMin = diffMin;
}
public EConfiguration getConfiguration() {
return configuration;
}
public void setConfiguration(EConfiguration configuration) {
this.configuration = configuration;
}
public String getCurrency() {
return currency;
}
public void setCurrency(String currency) {
this.currency = currency;
}
public double getDiffMin() {
return diffMin;
}
public void setDiffMin(double diffMin) {
this.diffMin = diffMin;
}

}

This mapping does not work and I do not understand why, can someone
help me?
Where do I make a mistake?
How can I solve?
Thanks, bye bye.
 
Ad

Advertisements


Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top