Hi all,
i have two tables joined by a foreign key.The relation between them are 1:n so many rows from child are from one Parent. I want that Child objects inherit foreign key from parent to all Primary key objects that owns. When I try to insert a new Parent with new childs gives me a key violation error. I think problems could be:
             - It tries to insert first of all Child objects.
             - Parent Foreign Key doesn´t have same value as Child Primary key.
What's wrong?. Here are my source code:
tIncidencias.hbm.xml (Parent)
Code:
<hibernate-mapping package="bbdd.modelos">
<class name="tIncidencias"
      table="incidencias" lazy="true">
   <!-- Common id property. -->
   <id name="Id_Inci"
      type="int"
      column="id_inci"
      unsaved-value="0">
      <generator class="native">
                    <param name="sequence">cod_incidencia_cod_inci_seq</param>
                </generator>
   </id>
   <!-- A versioned entity. -->
   <property   name="Num_Emple"
            type="int"
            column="num_emple"
            not-null="false"/>
        <property   name="Centro_Para"
            type="string"
            column="centro_para"
            not-null="false"/>
        <property   name="Tipo"
            type="string"
            column="tipo"
            not-null="false"/> 
                                
   <!-- Limit item description to 4000 characters, Oracle. -->
   <property   name="Fecha"
            type="date"
            column="fecha"
            not-null="false"/>
   <property   name="Hora"
            type="time"
            column="hora"
            not-null="false"/>
                                
        <property   name="Estado"
            type="int"
            column="estado"
            not-null="false"/>
        <property   name="Prioridad"
            type="int"
            column="prioridad"
            not-null="false"/>
        <property   name="Ubicacion"
            type="string"
            column="ubicacion"
            not-null="false"/> 
                                
   <!-- Limit item description to 4000 characters, Oracle. -->
   <property   name="Num_Serie"
            type="string"
            column="num_serie"
            not-null="false"/>
   <many-to-one name="Sistema" 
                   class="tSistemas"
         column="id_sist"
         cascade="save-update"
         unique="true"/>
                                
                                
           <property   name="Breve"
            type="string"
            column="breve"
            not-null="false"/>
        <property   name="Detalle"
            type="string"
            column="detalle"
            not-null="false"/>
        <property   name="Id_Operador"
            type="int"
            column="id_ope"
            not-null="false"/> 
                                
   <!-- Limit item description to 4000 characters, Oracle. -->
   <property   name="Observaciones"
            type="string"
            column="observaciones"
            not-null="false"/>
   <property   name="Com_Ope"
            type="int"
            column="com_ope"
            not-null="false"/>
                                
        <property   name="Fecha_Res"
            type="date"
            column="fecha_res"
            not-null="false"/>
        <property   name="Comentarios"
            type="string"
            column="comentarios"
            not-null="false"/>
        <property   name="Fecha_Resu"
            type="date"
            column="fecha_resu"
            not-null="false"/> 
                                
   <!-- Limit item description to 4000 characters, Oracle. -->
   <property   name="Accion"
            type="string"
            column="accion"
            not-null="false"/>
   <property   name="Ope_Prod"
            type="int"
            column="ope_prod"
            not-null="false"/>
                                
        <property   name="Ope_Seg"
            type="int"
            column="ope_seg"
            not-null="false"/>
                                
        <property   name="Ope_Doseg"
            type="int"
            column="ope_doseg"
            not-null="false"/>
        <property   name="Datos"
            type="string"
            column="datos"
            not-null="false"/>
        <many-to-one name="Tipo_Inci" 
                   class="tTipo_Inci"
         column="id_obj"
         cascade="save-update"
         unique="true"/>
                                
   <!-- Limit item description to 4000 characters, Oracle. -->
   <many-to-one name="Cod_Inci" 
                   class="tCod_Inci"
         column="cod_inci"
         cascade="save-update"
         unique="true"/>
                        
        <set name="Adjuntos" inverse="true" cascade="all">
            <key column="id_adjunto" not-null="true"/>
            <many-to-many class="tAdjuntos" unique="true" />
        </set>
</class>
</hibernate-mapping>
tAdjuntos.hbm.xml (Child)Code:
<hibernate-mapping package="bbdd.modelos">
<class name="tAdjuntos"
      table="adjuntos" lazy="true">
   <!-- Common id property. -->
        <id name="Id_Adjunto"
      type="int"
      column="id_adjunto"
      unsaved-value="0">
                <generator class="native">
                    <param name="sequence">incidencias_id_adjunto_seq</param>
                </generator>
   </id>
   <!-- A versioned entity. -->
   <property   name="Path"
            type="string"
            column="path"
            not-null="true"/>
</class>
</hibernate-mapping>
Insertion CodeCode:
newinci.setDetalle(request.getParameter("fDetalle"));
                    newinci.setNum_Emple(Integer.parseInt(sesion.getAttribute("sUsuario").toString()));
                    newinci.setPrioridad(Integer.parseInt(request.getParameter("fPrioridad")));
                    newinci.setCentro_Para(request.getParameter("fNumCentro"));
                    newinci.setFecha(dFechaNuevoCambio);
                    newinci.setBreve(request.getParameter("fBreve"));
                    newinci.setTipo_Inci(tipo_inci);
                    newinci.setSistema(sistema);
                    newinci.setCod_Inci(cod_inci);
                    newinci.setTipo("S");
                    if (request.getParameter("fAttach") != null) {
                        Set oAdjunto = new HashSet();
                        for (Iterator i=fFile.getAdjuntosWeb(request.getParameter("fAttach")).iterator(); i.hasNext();) {
                            tAdjuntos temp = new tAdjuntos();
                            temp.setPath("/wwwroot/archivos/incidencias/" + i.next());
                            temp.setId_Adjunto(newinci.getId_Inci());
                            oAdjunto.add(temp);
                        }
                    newinci.setAdjuntos(oAdjunto);
                    }
                     new IncidenciasDAO(oConexion.getSessionFactory().getCurrentSession()).save(newinci);
Generated ErrorCode:
[ WARN] {18/01/06 10:46:46} (hibernate.util.JDBCExceptionReporter.logExceptions()) - SQL Error: 0, SQLState: null
[ERROR] {18/01/06 10:46:46} (hibernate.util.JDBCExceptionReporter.logExceptions()) - Batch entry 0 insert into adjuntos (path, id_adjunto) values (/wwwroot/archivos/incidencias/servidor.sql, 7) was aborted.  Call getNextException to see the cause.
[ WARN] {18/01/06 10:46:46} (hibernate.util.JDBCExceptionReporter.logExceptions()) - SQL Error: 0, SQLState: 23503
[ERROR] {18/01/06 10:46:46} (hibernate.util.JDBCExceptionReporter.logExceptions()) - ERROR: insert or update on table "adjuntos" violates foreign key constraint "adjuntos_id_adjunto_fkey"
[ERROR] {18/01/06 10:46:46} (event.def.AbstractFlushingEventListener.performExecutions()) - Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:69)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:202)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:230)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
        at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:296)
        at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
        at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:980)
        at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:353)
        at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
        at bbdd.Hibernate.HibernateThreadFilter.doFilter(HibernateThreadFilter.java:98)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:738)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:526)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:595)
Caused by: java.sql.BatchUpdateException: Batch entry 0 insert into adjuntos (path, id_adjunto) values (/wwwroot/archivos/incidencias/servidor.sql, 7) was aborted.  Call getNextException to see the cause.
        at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2387)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1257)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:334)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2446)
        at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:294)
        at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:195)
        ... 25 more
[ERROR] {18/01/06 10:46:46} (bbdd.Hibernate.HibernateThreadFilter.doFilter()) - Cleanup after exception!
[ERROR] {18/01/06 10:46:46} (catalina.core.StandardWrapperValve.invoke()) - Servlet.service() para servlet jsp lanzó excepción
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:69)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:202)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:230)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
        at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:296)
        at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
        at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:980)
        at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:353)
        at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
        at bbdd.Hibernate.HibernateThreadFilter.doFilter(HibernateThreadFilter.java:98)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:738)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:526)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:595)
Caused by: java.sql.BatchUpdateException: Batch entry 0 insert into adjuntos (path, id_adjunto) values (/wwwroot/archivos/incidencias/servidor.sql, 7) was aborted.  Call getNextException to see the cause.
        at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2387)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1257)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:334)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2446)
        at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:294)
        at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:195)
Thanks all.