-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: composite primary key mapping in mapping file
PostPosted: Fri May 22, 2009 11:17 am 
Newbie

Joined: Fri May 22, 2009 11:14 am
Posts: 3
I have a problem in mapping a primary key of table A in the collection list of a mapping document.

Given below is my mapping file class,

<class name="icp.entity.TannualStmtLine" table="TANNUAL_STMT_LINE">
<id column="ANNUAL_STMT_LN_ID" name="annualStmtLnId" type="string">
<generator class="assigned"/>
</id>
<property name="annualStmtLnNm" type="string">
<column length="30" name="ANNUAL_STMT_LN_NM" not-null="true"/>
</property>
<property name="updateTs" type="timestamp">
<column length="45" name="UPDATE_TS" not-null="true"/>
</property>
<property name="updUserId" type="string">
<column length="8" name="UPD_USER_ID" not-null="true"/>
</property>
<property name="exceptionIn" type="char">
<column length="1" name="EXCEPTION_IN" not-null="true"/>
</property>
<property name="ovAnnlStmtLnId" type="string">
<column length="3" name="OV_ANNL_STMT_LN_ID" not-null="true"/>
</property>
<set name="treserveFactors" table="TRESERVE_FACTOR">
<key column="ANNUAL_STMT_LN_ID"/>
<composite-element class="icp.entity.TreserveFactor">
<parent name="icp.entity.TannualStmtLine"/>
<property name ="treserveFactorPK" column="MEASURE_ID"/>
<property name ="treserveFactorPK" column="YEAR_NO"/>
<property name ="treserveFactorPK" column="QUARTER_NO"/>
<property name ="treserveFactorPK" column="POOL_CD"/>
<property name ="treserveFactorPK" column="COMPANY_NO"/>
<property name ="crntResrvFctrPc" column="CRNT_RESRV_FCTR_PC"/>
<property name ="min1ResrvFctrPc" column="MIN1_RESRV_FCTR_PC"/>
<property name ="min2ResrvFctrPc" column="MIN2_RESRV_FCTR_PC"/>
<property name ="min3ResrvFctrPc" column="MIN3_RESRV_FCTR_PC"/>
<property name ="min4ResrvFctrPc" column="MIN4_RESRV_FCTR_PC"/>
<property name ="updateTs" column="UPDATE_TS"/>
<property name ="updUserId" column="UPD_USER_ID"/>
<property name ="min5ResrvFctrPc" column="MIN5_RESRV_FCTR_PC"/>
</composite-element>
</set>
</class>

I am trying to add a collection of TRESERVE_FACTOR table in the TannualStmtLine java class.

I use the below query to get the data from the database,

<sql-query name="findReserveFactors"><![CDATA[
SELECT TannualStmtLine.*,TreserveFactor.*
FROM REPORTER.TANNUAL_STMT_LINE TannualStmtLine
right outer join REPORTER.TRESERVE_FACTOR TreserveFactor
on TannualStmtLine.ANNUAL_STMT_LN_ID = TreserveFactor.ANNUAL_STMT_LN_ID
AND TreserveFactor.YEAR_NO=:year
AND TreserveFactor.QUARTER_NO=:quarter
AND TreserveFactor.MEASURE_ID=:measureid
AND TreserveFactor.COMPANY_NO=:comp
where
TannualStmtLine.ANNUAL_STMT_LN_ID <> '310'
order by TannualStmtLine.ANNUAL_STMT_LN_ID]]>
<return alias ="TannualStmtLine" class="icp.entity.TannualStmtLine"/>

</sql-query>

I am completely missing something here. But, I don't what is it.

Below is the set,

<set name="treserveFactors" table="TRESERVE_FACTOR">
<key column="ANNUAL_STMT_LN_ID"/>
<composite-element class="icp.entity.TreserveFactor">
<parent name="icp.entity.TannualStmtLine"/>
<property name ="treserveFactorPK" column="MEASURE_ID"/>
<property name ="treserveFactorPK" column="YEAR_NO"/>
<property name ="treserveFactorPK" column="QUARTER_NO"/>
<property name ="treserveFactorPK" column="POOL_CD"/>
<property name ="treserveFactorPK" column="COMPANY_NO"/>
<property name ="crntResrvFctrPc" column="CRNT_RESRV_FCTR_PC"/>
<property name ="min1ResrvFctrPc" column="MIN1_RESRV_FCTR_PC"/>
<property name ="min2ResrvFctrPc" column="MIN2_RESRV_FCTR_PC"/>
<property name ="min3ResrvFctrPc" column="MIN3_RESRV_FCTR_PC"/>
<property name ="min4ResrvFctrPc" column="MIN4_RESRV_FCTR_PC"/>
<property name ="updateTs" column="UPDATE_TS"/>
<property name ="updUserId" column="UPD_USER_ID"/>
<property name ="min5ResrvFctrPc" column="MIN5_RESRV_FCTR_PC"/>
</composite-element>
</set>

I have given the parent tag in the set because ANNUAL_STMT_LN_ID column is a primary key on the table TANNUAL_STMT_LINE. I am trying to do the mapping for the remaining columns of the table TRESERVE_FACTOR.

TRESERVE_FACTOR table has the following primay keys,
<property name ="treserveFactorPK" column="MEASURE_ID"/>
<property name ="treserveFactorPK" column="YEAR_NO"/>
<property name ="treserveFactorPK" column="QUARTER_NO"/>
<property name ="treserveFactorPK" column="POOL_CD"/>
<property name ="treserveFactorPK" column="COMPANY_NO"/>

I have given the name of the property as treserveFactorPK. The reason is when I created a entitiy POJO for TRESERVE_FACTOR, it created two java classes.
TreserveFactorPK - Contains only all the primay keys of table TRESERVE_FACTOR.
TreserveFactor - Contains TreserveFactorPK as one of the element and all non-primay keys of TRESERVE_FACTOR.

My problem is how to define the property element within Composite-element. Say for example how to define the MEASURE_ID field, I have tried the below options, all are failed,

<property name ="measureId" column="MEASURE_ID"/>
<property name ="treserveFactorPK" column="MEASURE_ID"/>
<property name ="treserveFactorPK.measureId" column="MEASURE_ID"/>

error:
MeasureId not defined in class TreserveFactor

Can anyone tell me how to define this? Sorry, I know it may be insane to you.. But, I struck on this by more than two weeks now..........help is appericated..


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.