Hi,
I need to copy some data from a remote DB and insert into a target DB. I have a DB Link created in my target DB for the remote DB
Now I want to run a native sql and type caste the result into my target DB Domain object and then call saveorupdate.
I am unable to do this,
What I have now is
Code:
<hibernate-mapping>
<sql-query name="DealerProfile" flush-mode="auto">
select DLRM_CMPN_NO as {dealerMaster.DLMST_CMPN_NO},
DLRM_CORP_NO as {dealerMaster.DLMST_CORP_NO},
DLRM_DLR_NO as {dealerMaster.DLMST_DLR_NO},
DLRM_SPR_DLR_NO as {dealerMaster.DLMST_SPR_DLR_NO},
DLRM_DLR_DSCTN as {dealerMaster.DLMST_DLR_DSCTN},
DLRM_MAIN_DLR_YN as {dealerMaster.DLMST_MAIN_DLR_YN},
DLRM_BRCH_SEQ_NO as {dealerMaster.DLMST_BRCH_SEQ_NO},
DLRM_RGN_OFCE_NO as {dealerMaster.DLMST_RGN_OFCE_NO},
DLRM_CRTE_EMP_NO as {dealerMaster.DLMST_CRTE_USR_NO},
DLRM_UPDT_EMP_NO as {dealerMaster.DLMST_UPDT_USR_NO},
DLRM_CRTE_DTIME as {dealerMaster.DLMST_CRTE_TIME},
DLRM_UPDT_DTIME as {dealerMaster.DLMST_UPDT_TIME}
from CADLRM_TB@servicelive
<return alias="dealerMaster" class="hmil.com.dlr.model.Dealer" />
</sql-query>
</hibernate-mapping>
And in my Java Class I have
Code:
session.beginTransaction();
result = session.getNamedQuery("DealerProfile").list();
for (Iterator itr = result.iterator(); itr.hasNext();)
{
Dealer dealer = (Dealer) itr.next();
session.saveorupdate(dealer);
}
session.getTransaction().commit();
And I also have the mapping for Dealer class
Code:
<hibernate-mapping>
<class name="hmil.com.dlr.model.Dealer" table="CMDLMST_TB">
<id name="DLMST_DLR_NO" column="DLMST_DLR_NO" type="java.lang.String">
<generator class="assigned" />
</id>
<property name="DLMST_CMPN_NO" insert="false" update="false" type="java.lang.String"/>
<property name="DLMST_CORP_NO" insert="false" update="false" type="java.lang.String"/>
<property name="DLMST_SPR_DLR_NO" insert="false" update="false" type="java.lang.String"/>
<property name="DLMST_DLR_DSCTN" insert="false" update="false" type="java.lang.String"/>
<property name="DLMST_MAIN_DLR_YN" insert="false" update="false" type="java.lang.String"/>
<property name="DLMST_BRCH_SEQ_NO" insert="false" update="false" type="int"/>
<property name="DLMST_RGN_OFCE_NO" insert="false" update="false" type="java.lang.String"/>
<property name="DLMST_CRTE_USR_NO" insert="false" update="false" type="java.lang.String"/>
<property name="DLMST_CRTE_TIME" insert="false" update="false" type="java.sql.Timestamp"/>
<property name="DLMST_UPDT_USR_NO" insert="false" update="false" type="java.lang.String"/>
<property name="DLMST_UPDT_TIME" insert="false" update="false" type="java.sql.Timestamp"/>
</class>
</hibernate-mapping>
And also the getter setter class, but when I run this method to get the data and update in target DB,
It is getting the data and even I can print the values
but it does not update the value in to my target db ,
If I iterate and form a new object with same id and when I try to save, it throws that another object with same id exists.
But it does not update the targetDB.
So please help me.
I have a spring + Hibernate setup, and what is the best way to write some batch program (currently I am using Quartz to trigger the method call)to transfer data between different Data Base, with the help of hibernate. Or Is it best to use Plain Java and jdbc