[jboss-user] [Persistence, JBoss/CMP, Hibernate, Database] - Problems with one-to-many relationship mapping
a.mulone
do-not-reply at jboss.com
Tue Jun 16 09:28:27 EDT 2009
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 underlined the 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="@CATALOG@" 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="@CATALOG@" 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="@CATALOG@" 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="@CATALOG@" 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="@CATALOG@" 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="@CATALOG@" 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.
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4237923#4237923
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4237923
More information about the jboss-user
mailing list