Need help with Hibernate? Read this first:
http://www.hibernate.org/ForumMailingli ... AskForHelp
Hibernate version:2.1.6
Mapping documents:
Mapping document of the source database:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping auto-import="false">
<!--
=============================================================================================
ConfigurazionePagamento
=============================================================================================
-->
<!--
ConfigurazionePagamento: Istanza non localizzata
-->
<class name="it.tno.pagamento.configurazione.ConfigurazionePagamento" table="Configurazione">
<id name="id" column="id" type="int" unsaved-value="0">
<generator class="native"/>
</id>
<property name="idConfigurazione" unique="true"/>
<property name="hostMailServer"/>
<property name="tipoMailServer"/>
<property name="versioneStrutturaDataBase"/>
<property name="primoIdOrdinePagamento"/>
<property name="pathContextRoot"/>
<property name="tempoDiAttesaElaborazioneRisposteViaEMail"/>
</class>
<!--
=============================================================================================
ServizioPagamento
=============================================================================================
-->
<!--
ServizioPagamento: Istanza non localizzata
-->
<class name="it.tno.pagamento.servizioPagamento.ServizioPagamento" table="ServizioPagamento">
<id name="id" column="id" type="int" unsaved-value="0">
<generator class="native"/>
</id>
<property name="idServizioPagamento" unique="true"/>
<property name="servizioPagamento"/>
<property name="fornitore"/>
<property name="supportoTerminalID"/>
<property name="supportoOTP"/>
<property name="lunghezzaOTP"/>
<property name="stato"/>
<property name="url"/>
</class>
<!--
=============================================================================================
Applicazione
=============================================================================================
-->
<!--
Applicazione: Istanza non localizzata
-->
<class name="it.tno.pagamento.applicazione.Applicazione" table="Applicazione">
<id name="id" column="id" type="int" unsaved-value="0">
<generator class="native"/>
</id>
<property name="idApplicazione" unique="true"/>
<property name="chiaveHash"/>
<property name="stato"/>
<!-- Opzione all-delete-orphan utile per forzare cancellazione di oggetti figli (bar) non piu' utili -->
<!--
<set name="collezioneI18N" table="FAQI18N" cascade="all-delete-orphan" inverse="true">
<key column="entita_id"/>
<one-to-many class="it.tno.faq.engine.FAQI18N"/>
</set>
-->
<!-- Sezioni associate -->
<!--
<set name="sezioni" table="Sezione" cascade="all-delete-orphan" inverse="true">
<key column="faq_id"/>
<one-to-many class="it.tno.faq.engine.Sezione"/>
</set>
-->
</class>
<!--
=============================================================================================
Venditore
=============================================================================================
-->
<!--
Venditore: Istanza non localizzata
-->
<class name="it.tno.pagamento.venditore.Venditore" table="Venditore">
<id name="id" column="id" type="int" unsaved-value="0">
<generator class="native"/>
</id>
<property name="idApplicazione" column="idApplicazione"/>
<property name="idOrganizzazione" column="idOrganizzazione"/>
<property name="chiaveUnivoca" column="chiaveUnivoca" unique="true"/>
<property name="idServizioPagamento"/>
<property name="idVenditore"/>
<property name="terminalId" type="int"/>
<property name="stato"/>
<property name="logo"/>
<property name="emailOKUsername"/>
<property name="emailOKPassword"/>
<property name="emailKOUsername"/>
<property name="emailKOPassword"/>
<!-- Associazione verso Applicazione -->
<many-to-one name="applicazione" column="applicazione_id" class="it.tno.pagamento.applicazione.Applicazione"/>
</class>
<!--
=============================================================================================
OneTimePassword
=============================================================================================
-->
<!--
OneTimePassword: Istanza non localizzata
-->
<class name="it.tno.pagamento.otp.OneTimePassword" table="OneTimePassword">
<id name="id" column="id" type="int" unsaved-value="0">
<generator class="native"/>
</id>
<property name="idApplicazione" column="idApplicazione"/>
<property name="idOrganizzazione" column="idOrganizzazione"/>
<property name="chiaveUnivoca" column="chiaveUnivoca" unique="true"/>
<property name="flusso"/>
<property name="password"/>
<!-- Associazione verso Venditore -->
<many-to-one name="venditore" column="venditore_id" class="it.tno.pagamento.venditore.Venditore" />
</class>
<!--
=============================================================================================
OrdinePagamento
=============================================================================================
-->
<!--
OrdinePagamento: Istanza non localizzata
-->
<class name="it.tno.pagamento.ordinePagamento.OrdinePagamento" table="OrdinePagamento">
<id name="id" column="id" type="int" unsaved-value="0">
<generator class="native"/>
</id>
<property name="idOrdinePagamento" unique="true"/>
<property name="idApplicazione"/>
<property name="idOrganizzazione"/>
<property name="idServizioPagamento"/>
<property name="idVenditore"/>
<property name="idOrdine"/>
<property name="importoOrdine"/>
<property name="importoValuta"/>
<property name="importoOrdinePagamento"/>
<property name="esitoTransazione"/>
<property name="codiceAutorizzazione"/>
<property name="idOrdineBanca"/>
<property name="codiceErrore"/>
<property name="descrizioneErrore"/>
<property name="dataRichiesta"/>
<property name="dataRisposta"/>
<property name="urlAutorizzazioneConcessa"/>
<property name="urlAutorizzazioneRifiutata"/>
<property name="stato"/>
<property name="metodoRisposta"/>
<property name="modalita"/>
<!-- Esiti associati -->
<set name="collezioneEsiti" table="OrdinePagamentoEsito" cascade="all-delete-orphan" inverse="true">
<key column="esito_id"/>
<one-to-many class="it.tno.pagamento.ordinePagamento.OrdinePagamentoEsito"/>
</set>
<!-- Mail di Risposta associate -->
<set name="collezioneMailRisposta" table="MailRisposta" cascade="all-delete-orphan" inverse="true">
<key column="ordinePagamento_id"/>
<one-to-many class="it.tno.pagamento.ordinePagamento.MailRisposta"/>
</set>
</class>
<!--
=============================================================================================
OrdinePagamentoEsito
=============================================================================================
-->
<!--
OrdinePagamentoEsito: Istanza non localizzata
-->
<class name="it.tno.pagamento.ordinePagamento.OrdinePagamentoEsito" table="OrdinePagamentoEsito">
<id name="id" column="id" type="int" unsaved-value="0">
<generator class="native"/>
</id>
<property name="idOrdinePagamento"/>
<property name="idCanaleDiRicezione"/>
<property name="data"/>
<property name="info">
</property>
<!-- Associazione verso OrdinePagamento -->
<many-to-one name="ordinePagamento" column="esito_id" class="it.tno.pagamento.ordinePagamento.OrdinePagamento"/>
</class>
<!--
=============================================================================================
OrdinePagamentoEsito
=============================================================================================
-->
<!--
OrdinePagamentoEsito: Istanza non localizzata
-->
<class name="it.tno.pagamento.ordinePagamento.MailRisposta" table="MailRisposta">
<id name="id" column="id" type="int" unsaved-value="0">
<generator class="native"/>
</id>
<property name="tipoMessaggio"/>
<property name="dataRisposta"/>
<property name="dataTransazione"/>
<property name="idServizioPagamento"/>
<property name="idVenditore"/>
<property name="idOrdinePagamento"/>
<property name="importoOrdinePagamentoEuro"/>
<property name="codiceAutorizzazione"/>
<!-- Associazione verso OrdinePagamento -->
<many-to-one name="ordinePagamento" column="ordinePagamento_id" class="it.tno.pagamento.ordinePagamento.OrdinePagamento"/>
</class>
</hibernate-mapping>
Mapping document of the destination database:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping auto-import="false">
<!--
=============================================================================================
ConfigurazionePagamento
=============================================================================================
-->
<!--
ConfigurazionePagamento: Istanza non localizzata
-->
<class name="it.tno.pagamento.configurazione.ConfigurazionePagamento" table="Configurazione">
<id name="id" column="id" type="int" unsaved-value="0">
<generator class="native"/>
</id>
<property name="idConfigurazione" unique="true"/>
<property name="hostMailServer"/>
<property name="tipoMailServer"/>
<property name="versioneStrutturaDataBase"/>
<property name="primoIdOrdinePagamento"/>
<property name="pathContextRoot"/>
<property name="tempoDiAttesaElaborazioneRisposteViaEMail"/>
</class>
<!--
=============================================================================================
ServizioPagamento
=============================================================================================
-->
<!--
ServizioPagamento: Istanza non localizzata
-->
<class name="it.tno.pagamento.servizioPagamento.ServizioPagamento" table="ServizioPagamento">
<id name="id" column="id" type="int" unsaved-value="0">
<generator class="native"/>
</id>
<property name="idServizioPagamento" unique="true"/>
<property name="servizioPagamento"/>
<property name="fornitore"/>
<property name="supportoTerminalID"/>
<property name="supportoOTP"/>
<property name="lunghezzaOTP"/>
<property name="stato"/>
<property name="url"/>
</class>
<!--
=============================================================================================
Applicazione
=============================================================================================
-->
<!--
Applicazione: Istanza non localizzata
-->
<class name="it.tno.pagamento.applicazione.Applicazione" table="Applicazione">
<id name="id" column="id" type="int" unsaved-value="0">
<generator class="native"/>
</id>
<property name="idApplicazione" unique="true"/>
<property name="chiaveHash"/>
<property name="stato"/>
<!-- Opzione all-delete-orphan utile per forzare cancellazione di oggetti figli (bar) non piu' utili -->
<!--
<set name="collezioneI18N" table="FAQI18N" cascade="all-delete-orphan" inverse="true">
<key column="entita_id"/>
<one-to-many class="it.tno.faq.engine.FAQI18N"/>
</set>
-->
<!-- Sezioni associate -->
<!--
<set name="sezioni" table="Sezione" cascade="all-delete-orphan" inverse="true">
<key column="faq_id"/>
<one-to-many class="it.tno.faq.engine.Sezione"/>
</set>
-->
</class>
<!--
=============================================================================================
Venditore
=============================================================================================
-->
<!--
Venditore: Istanza non localizzata
-->
<class name="it.tno.pagamento.venditore.Venditore" table="Venditore">
<id name="id" column="id" type="int" unsaved-value="0">
<generator class="native"/>
</id>
<property name="idApplicazione" column="idApplicazione"/>
<property name="idOrganizzazione" column="idOrganizzazione"/>
<property name="chiaveUnivoca" column="chiaveUnivoca" unique="true"/>
<property name="idServizioPagamento"/>
<property name="idVenditore"/>
<property name="terminalId" type="int"/>
<property name="stato"/>
<property name="logo"/>
<property name="emailOKUsername"/>
<property name="emailOKPassword"/>
<property name="emailKOUsername"/>
<property name="emailKOPassword"/>
<!-- Associazione verso Applicazione -->
<many-to-one name="applicazione" column="applicazione_id" class="it.tno.pagamento.applicazione.Applicazione"/>
</class>
<!--
=============================================================================================
OneTimePassword
=============================================================================================
-->
<!--
OneTimePassword: Istanza non localizzata
-->
<class name="it.tno.pagamento.otp.OneTimePassword" table="OneTimePassword">
<id name="id" column="id" type="int" unsaved-value="0">
<generator class="native"/>
</id>
<property name="idApplicazione" column="idApplicazione"/>
<property name="idOrganizzazione" column="idOrganizzazione"/>
<property name="chiaveUnivoca" column="chiaveUnivoca" unique="true"/>
<property name="flusso"/>
<property name="password"/>
<!-- Associazione verso Venditore -->
<many-to-one name="venditore" column="venditore_id" class="it.tno.pagamento.venditore.Venditore" />
</class>
<!--
=============================================================================================
OrdinePagamento
=============================================================================================
-->
<!--
OrdinePagamento: Istanza non localizzata
-->
<class name="it.tno.pagamento.ordinePagamento.OrdinePagamento" table="OrdinePagamento">
<id name="id" column="id" type="int" unsaved-value="0">
<generator class="native"/>
</id>
<property name="idOrdinePagamento" unique="true"/>
<property name="idApplicazione"/>
<property name="idOrganizzazione"/>
<property name="idServizioPagamento"/>
<property name="idVenditore"/>
<property name="idOrdine"/>
<property name="importoOrdine"/>
<property name="importoValuta"/>
<property name="importoOrdinePagamento"/>
<property name="esitoTransazione"/>
<property name="codiceAutorizzazione"/>
<property name="idOrdineBanca"/>
<property name="codiceErrore"/>
<property name="descrizioneErrore"/>
<property name="dataRichiesta"/>
<property name="dataRisposta"/>
<property name="urlAutorizzazioneConcessa"/>
<property name="urlAutorizzazioneRifiutata"/>
<property name="stato"/>
<property name="metodoRisposta"/>
<property name="modalita"/>
<!-- Esiti associati -->
<set name="collezioneEsiti" table="OrdinePagamentoEsito" cascade="all-delete-orphan" inverse="true">
<key column="esito_id"/>
<one-to-many class="it.tno.pagamento.ordinePagamento.OrdinePagamentoEsito"/>
</set>
<!-- Mail di Risposta associate -->
<set name="collezioneMailRisposta" table="MailRisposta" cascade="all-delete-orphan" inverse="true">
<key column="ordinePagamento_id"/>
<one-to-many class="it.tno.pagamento.ordinePagamento.MailRisposta"/>
</set>
</class>
<!--
=============================================================================================
OrdinePagamentoEsito
=============================================================================================
-->
<!--
OrdinePagamentoEsito: Istanza non localizzata
-->
<class name="it.tno.pagamento.ordinePagamento.OrdinePagamentoEsito" table="OrdinePagamentoEsito">
<id name="id" column="id" type="int" unsaved-value="0">
<generator class="native"/>
</id>
<property name="idOrdinePagamento"/>
<property name="idCanaleDiRicezione"/>
<property name="data"/>
<property name="info">
</property>
<!-- Associazione verso OrdinePagamento -->
<many-to-one name="ordinePagamento" column="esito_id" class="it.tno.pagamento.ordinePagamento.OrdinePagamento"/>
</class>
<!--
=============================================================================================
OrdinePagamentoEsito
=============================================================================================
-->
<!--
OrdinePagamentoEsito: Istanza non localizzata
-->
<class name="it.tno.pagamento.ordinePagamento.MailRisposta" table="MailRisposta">
<id name="id" column="id" type="int" unsaved-value="0">
<generator class="native"/>
</id>
<property name="tipoMessaggio"/>
<property name="dataRisposta"/>
<property name="dataTransazione"/>
<property name="idServizioPagamento"/>
<property name="idVenditore"/>
<property name="idOrdinePagamento"/>
<property name="importoOrdinePagamentoEuro"/>
<property name="codiceAutorizzazione"/>
<!-- Associazione verso OrdinePagamento -->
<many-to-one name="ordinePagamento" column="ordinePagamento_id" class="it.tno.pagamento.ordinePagamento.OrdinePagamento"/>
</class>
</hibernate-mapping>
Code between sessionFactory.openSession() and session.close():
public synchronized static void copy(Class classe, Session fromSession, Session toSession)
throws PersistentLayerException,
PersistentObjectHasRelationshipException,
PersistentObjectDuplicatedException,
NoSuchMethodException,
IllegalAccessException,
InvocationTargetException,
java.lang.InstantiationException
{
List list = null;
Object classeObj = classe.newInstance();
// ************************************************************************
// Lettura istanze
// ************************************************************************
Class[] parametersType = {};
Object[] args = {};
try
{
// Creazione oggetto per metodo da invocare
Method metodoFindAll = classe.getMethod("findAll", parametersType);
// Invocazione metodo su oggetto della classe individuata
list = (List) metodoFindAll.invoke(classeObj, args);
// Cancellazione di tutte le istanze esistenti
// APersistentLayer.deleteAll(toSession, classe);
// toSession.flush();
}
catch (NoSuchMethodException exc)
{
throw exc;
}
catch (IllegalAccessException exc)
{
throw exc;
}
catch (InvocationTargetException exc)
{
throw exc;
}
Iterator iter = list.iterator();
while (iter.hasNext())
{
Object istanza = iter.next();
// Id of the instance from the soure data store (fromId) and from the destination
// data source (toId)
int fromId = -1;
int toId = -1;
// if (log.isDebugEnabled())
{
try
{
// Retrieve id
parametersType = new Class[] {Object.class};
args = new Object[] {istanza};
Method method = classe.getMethod("getId", parametersType);
fromId = ( (Integer) method.invoke(classeObj, args)).intValue();
}
catch (NoSuchMethodException exc)
{
// Metodo non implementato - pazienza non si può eseguire debug
;
}
catch (IllegalAccessException exc)
{
throw exc;
}
catch (InvocationTargetException exc)
{
throw exc;
}
}
try
{
toSession.replicate(istanza, ReplicationMode.OVERWRITE);
}
catch (HibernateException ex)
{
throw new PersistentLayerException(ex);
}
// if (log.isDebugEnabled())
{
try
{
// Retrieve id
parametersType = new Class[] {Object.class};
args = new Object[] {istanza};
Method method = classe.getMethod("getId", parametersType);
toId = ( (Integer) method.invoke(classeObj, args)).intValue();
}
catch (NoSuchMethodException exc)
{
// Metodo non implementato - pazienza non si può eseguire debug
;
}
catch (IllegalAccessException exc)
{
throw exc;
}
catch (InvocationTargetException exc)
{
throw exc;
}
if (toId == fromId)
{
System.out.println("*******************************************************");
System.out.println(classe.getName() + " - Instance replicated with same ID : toId=" + toId + " (fromId=" + fromId + ") <============= !!!!!!!!!!!!!!!");
System.out.println("*******************************************************");
}
else
{
System.out.println("*******************************************************");
System.out.println(classe.getName() + " - Instance replicated with new ID :toId=" + toId + " (fromId=" + fromId + ") <============= ???????????????????");
System.out.println("*******************************************************");
}
}
}
}
My test method:
public static void main(String[] args) throws Exception
{
Session session = null;
Session toSession = null;
Transaction toTx= null;
String nomeFileConfigurazioneOutput = "hibernate.copia.native.cfg.xml";
try
{
HibernateManager.schemaUpdate(nomeFileConfigurazioneOutput);
session = HibernateManager.currentSession();
toSession = HibernateManager.currentSession(nomeFileConfigurazioneOutput);
toTx = toSession.beginTransaction();
}
catch (HibernateException ecc)
{
throw new PersistentLayerException(ecc);
}
try
{
try
{
toTx = toSession.beginTransaction();
APersistentLayer.copy(ConfigurazioneDAO.class, session, toSession);
APersistentLayer.copy(ApplicazioneDAO.class, session, toSession);
APersistentLayer.copy(ServizioPagamentoDAO.class, session, toSession);
toSession.flush();
toTx.commit();
toTx = toSession.beginTransaction();
APersistentLayer.copy(VenditoreDAO.class, session, toSession);
toSession.flush();
toTx.commit();
toTx = toSession.beginTransaction();
APersistentLayer.copy(OneTimePasswordDAO.class, session, toSession);
toSession.flush();
toTx.commit();
toTx = toSession.beginTransaction();
APersistentLayer.copy(OrdinePagamentoDAO.class, session, toSession);
toTx.commit();
}
catch (HibernateException ecc)
{
throw new PersistentLayerException(ecc);
}
catch (PersistentLayerException ex)
{
throw new RuntimeException(ex);
}
finally
{
try
{
if (!toTx.wasCommitted())
{
toTx.rollback();
}
}
catch (HibernateException ex1)
{
throw new RuntimeException(ex1);
}
}
}
Full stack trace of any exception that occurs:
Hibernate: select ordinepaga0_.id as id, ordinepaga0_.idOrdinePagamento as idOrdine2_, ordinepaga0_.idApplicazione as idApplic3_, ordinepaga0_.idOrganizzazione as idOrgani4_, ordinepaga0_.idServizioPagamento as idServiz5_, ordinepaga0_.idVenditore as idVendit6_, ordinepaga0_.idOrdine as idOrdine, ordinepaga0_.importoOrdine as importoO8_, ordinepaga0_.importoValuta as importoV9_, ordinepaga0_.importoOrdinePagamento as importo10_, ordinepaga0_.esitoTransazione as esitoTr11_, ordinepaga0_.codiceAutorizzazione as codiceA12_, ordinepaga0_.idOrdineBanca as idOrdin13_, ordinepaga0_.codiceErrore as codiceE14_, ordinepaga0_.descrizioneErrore as descriz15_, ordinepaga0_.dataRichiesta as dataRic16_, ordinepaga0_.dataRisposta as dataRis17_, ordinepaga0_.urlAutorizzazioneConcessa as urlAuto18_, ordinepaga0_.urlAutorizzazioneRifiutata as urlAuto19_, ordinepaga0_.stato as stato, ordinepaga0_.metodoRisposta as metodoR21_, ordinepaga0_.modalita as modalita from OrdinePagamento ordinepaga0_
numero istance cancellate 0<==============
Hibernate: select configuraz0_.id as id, configuraz0_.idConfigurazione as idConfig2_, configuraz0_.hostMailServer as hostMail3_, configuraz0_.tipoMailServer as tipoMail4_, configuraz0_.versioneStrutturaDataBase as versione5_, configuraz0_.primoIdOrdinePagamento as primoIdO6_, configuraz0_.pathContextRoot as pathCont7_, configuraz0_.tempoDiAttesaElaborazioneRisposteViaEMail as tempoDiA8_ from Configurazione configuraz0_ order by configuraz0_.idConfigurazione
Hibernate: select id from Configurazione where id =?
Hibernate: insert into Configurazione (idConfigurazione, hostMailServer, tipoMailServer, versioneStrutturaDataBase, primoIdOrdinePagamento, pathContextRoot, tempoDiAttesaElaborazioneRisposteViaEMail) values (?, ?, ?, ?, ?, ?, ?)
*******************************************************
it.tno.pagamento.configurazione.ConfigurazioneDAO - Instance replicated with new ID :toId=1 (fromId=203) <============= ???????????????????
*******************************************************
Hibernate: select applicazio0_.id as id, applicazio0_.idApplicazione as idApplic2_, applicazio0_.chiaveHash as chiaveHash, applicazio0_.stato as stato from Applicazione applicazio0_ order by applicazio0_.idApplicazione
Hibernate: select id from Applicazione where id =?
Hibernate: insert into Applicazione (idApplicazione, chiaveHash, stato) values (?, ?, ?)
*******************************************************
it.tno.pagamento.applicazione.ApplicazioneDAO - Instance replicated with new ID :toId=1 (fromId=102) <============= ???????????????????
*******************************************************
Hibernate: select serviziopa0_.id as id, serviziopa0_.idServizioPagamento as idServiz2_, serviziopa0_.servizioPagamento as servizio3_, serviziopa0_.fornitore as fornitore, serviziopa0_.supportoTerminalID as supporto5_, serviziopa0_.supportoOTP as supporto6_, serviziopa0_.lunghezzaOTP as lunghezz7_, serviziopa0_.stato as stato, serviziopa0_.url as url from ServizioPagamento serviziopa0_ order by serviziopa0_.idServizioPagamento
Hibernate: select id from ServizioPagamento where id =?
Hibernate: insert into ServizioPagamento (idServizioPagamento, servizioPagamento, fornitore, supportoTerminalID, supportoOTP, lunghezzaOTP, stato, url) values (?, ?, ?, ?, ?, ?, ?, ?)
*******************************************************
it.tno.pagamento.servizioPagamento.ServizioPagamentoDAO - Instance replicated with new ID :toId=1 (fromId=203) <============= ???????????????????
*******************************************************
Hibernate: select id from ServizioPagamento where id =?
Hibernate: insert into ServizioPagamento (idServizioPagamento, servizioPagamento, fornitore, supportoTerminalID, supportoOTP, lunghezzaOTP, stato, url) values (?, ?, ?, ?, ?, ?, ?, ?)
*******************************************************
it.tno.pagamento.servizioPagamento.ServizioPagamentoDAO - Instance replicated with new ID :toId=2 (fromId=204) <============= ???????????????????
*******************************************************
Hibernate: select venditore0_.id as id, venditore0_.idApplicazione as idApplic2_, venditore0_.idOrganizzazione as idOrgani3_, venditore0_.chiaveUnivoca as chiaveUn4_, venditore0_.idServizioPagamento as idServiz5_, venditore0_.idVenditore as idVendit6_, venditore0_.terminalId as terminalId, venditore0_.stato as stato, venditore0_.logo as logo, venditore0_.emailOKUsername as emailOK10_, venditore0_.emailOKPassword as emailOK11_, venditore0_.emailKOUsername as emailKO12_, venditore0_.emailKOPassword as emailKO13_, venditore0_.applicazione_id as applica14_ from Venditore venditore0_ order by venditore0_.idApplicazione , venditore0_.idOrganizzazione
Hibernate: select id from Venditore where id =?
Hibernate: insert into Venditore (idApplicazione, idOrganizzazione, chiaveUnivoca, idServizioPagamento, idVenditore, terminalId, stato, logo, emailOKUsername, emailOKPassword, emailKOUsername, emailKOPassword, applicazione_id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
*******************************************************
it.tno.pagamento.venditore.VenditoreDAO - Instance replicated with new ID :toId=1 (fromId=2) <============= ???????????????????
*******************************************************
Hibernate: select onetimepas0_.id as id, onetimepas0_.idApplicazione as idApplic2_, onetimepas0_.idOrganizzazione as idOrgani3_, onetimepas0_.chiaveUnivoca as chiaveUn4_, onetimepas0_.flusso as flusso, onetimepas0_.password as password, onetimepas0_.venditore_id as venditor7_ from OneTimePassword onetimepas0_ order by onetimepas0_.idApplicazione , onetimepas0_.idOrganizzazione
Hibernate: select venditore0_.id as id1_, venditore0_.idApplicazione as idApplic2_1_, venditore0_.idOrganizzazione as idOrgani3_1_, venditore0_.chiaveUnivoca as chiaveUn4_1_, venditore0_.idServizioPagamento as idServiz5_1_, venditore0_.idVenditore as idVendit6_1_, venditore0_.terminalId as terminalId1_, venditore0_.stato as stato1_, venditore0_.logo as logo1_, venditore0_.emailOKUsername as emailOK10_1_, venditore0_.emailOKPassword as emailOK11_1_, venditore0_.emailKOUsername as emailKO12_1_, venditore0_.emailKOPassword as emailKO13_1_, venditore0_.applicazione_id as applica14_1_, applicazio1_.id as id0_, applicazio1_.idApplicazione as idApplic2_0_, applicazio1_.chiaveHash as chiaveHash0_, applicazio1_.stato as stato0_ from Venditore venditore0_ left outer join Applicazione applicazio1_ on venditore0_.applicazione_id=applicazio1_.id where venditore0_.id=?
Hibernate: select id from OneTimePassword where id =?
Hibernate: insert into OneTimePassword (idApplicazione, idOrganizzazione, chiaveUnivoca, flusso, password, venditore_id) values (?, ?, ?, ?, ?, ?)
10796 [main] WARN util.JDBCExceptionReporter - SQL Error: 547, SQLState: 23000
10796 [main] ERROR util.JDBCExceptionReporter - L'istruzione INSERT ha generato un conflitto con il vincolo COLUMN FOREIGN KEY 'FK4874A5EE83F4B828' nel database 'Pagamento_Hibernate_Copia_Native', tabella 'Venditore', column 'id'.
Hit uncaught exception java.lang.RuntimeException
Name and version of the database you are using:Microsoft SQL Server 2000
The generated SQL (show_sql=true):
Debug level Hibernate log excerpt:
Hi all,
I have 2 questions about copying all the instances from a data base to another one.
Question #1: Copying instances with native strategy
When I copy an instance with id based on native strategy, the new instance on the target database has a different id. For example, if you see the lines generated by the APersistenceLayer.copy method I get the following message:
it.tno.pagamento.venditore.VenditoreDAO - Instance replicated with new ID :toId=1 (fromId=2) <============= ???????????????????
Then when I copy another instance (ie, an istance of the OneTimePassword) which has an association with the previous one I get a CONFLICT with COLUMN FOREIGN KEY constraint:
10796 [main] WARN util.JDBCExceptionReporter - SQL Error: 547, SQLState: 23000
10796 [main] ERROR util.JDBCExceptionReporter - L'istruzione INSERT ha generato un conflitto con il vincolo COLUMN FOREIGN KEY 'FK4874A5EE83F4B828' nel database 'Pagamento_Hibernate_Copia_Native', tabella 'Venditore', column 'id'.
Hit uncaught exception java.lang.RuntimeException
I know that a lot of you copy data base without problem, so quite surely I’m wronging something.
Question #2: Copying instances with hilo strategy
If I have to copy an instance with id based on hilo strategy, shoud I copy the hilo table too? Any advice about a best practice?
Thank you in advance.
Pasquale D’Erasmo