Al modificar un "Disc_Grupo_Fliar_Conviviente" estas modificando parte de su
Id?

Saludos

El 4 de agosto de 2010 11:23, Erika Fernández <[email protected]>escribió:

> Por las dudas aclaro, porque nos ve claramente el los SQL que la tabla
> DISC_GRUPO_FLIAR_CONVIVIENTE tiene una composite-id
>
> On 4 ago, 08:48, Erika Fernández <[email protected]> wrote:
> > Buenos dias a todos. Voy a tratar de plantearles el problema lo más
> > simple posible.
> > Tengo una clase Disc_Registro_Perfil_Laboral con, entre otras cosas un
> > List<Disc_Grupo_Fliar_Conviviente>(donde se guardan los familiares de
> > una persona, el tipo de familiar y la cantidad de los mismos).
> > Al hacer SaveOrUpdate(registro), donde en realidad estoy tratando de
> > modificar un objeto que recupere previamente de la base de datos, hace
> > el update correctamente del objeto Registo, pero no asi los objetos
> > Familiares de la lista.
> > Estos son los errores:
> > 1. Al intentar modificar un familiar, previamente cargado en la base,
> > en vez de modificarlo, inserta un nuevo familiar. Este es el SQL que
> > genera:
> >
> > NHibernate: INSERT INTO SOLIDARIDAD.T_DISC_GRUPO_FLIAR_CONVIVIENTE
> > (CANTIDAD, USUARIO_ALTA, FECHA_ALTA, USUARIO_MODIF, FECHA_MODIF,
> > ID_REGISTRO, ID_TIPO_FAMILIAR) VALUES
> > (:p0, :p1, :p2, :p3, :p4, :p5, :p6);:p0 = 1, :p1 = 'SOLIDARIDAD', :p2
> > = 04/08/2010 08:35:35 a.m., :p3 = NULL, :p4 = NULL, :p5 = 63, :p6 = 3
> >
> > NHibernate: UPDATE SOLIDARIDAD.T_DISC_REGISTRO_PERFIL_LABORAL SET
> > ID_TIPO_DOCUMENTO = :p0, ID_SEXO = :p1, NRO_DOCUMENTO = :p2,
> > ID_TIPO_CAUSA_DISC = :p3, CAPACITACION = :p4, EMPLEO = :p5, PENSION
> > = :p6, INGRESO_POR_TRAMITE = :p7, OTRA_REF_DOMICILIO = :p8,
> > EDAD_COMIENZO_DISC = :p9, MOVILIDAD_CON_IND = :p10, RESOLUCION_PROB
> > = :p11, MANEJO_ADM_DINERO = :p12, MANEJO_PC = :p13, MANEJO_INTERNET
> > = :p14, MANEJO_OFFICE = :p15, CONOC_USO_TIPOS_TRANSP = :p16,
> > COMUNICACION = :p17, POSIBILIDAD_ELECCION = :p18,
> > EXPECTATIVAS_LABORALES = :p19, TIEMPO_LIBRE = :p20,
> > EXPECT_TAREAS_DESEMPENIAR = :p21, OBSERVACIONES_FICHA = :p22,
> > CURSOS_ADEC_ACCESO = :p23, CURSOS_CAPACITADO_PARA = :p24,
> > TRABAJOS_ADEC_ACCESO = :p25, TRABAJOS_OBSERVAC = :p26, ID_TIPO_JORNADA
> > = :p27, RELAC_INTERPERSONAL = :p28, FECHA_ENTREVISTA = :p29,
> > ID_ENTREVISTADOR = :p30, ID_TIPO_ENTREVISTA = :p31, USUARIO_ALTA
> > = :p32, FECHA_ALTA = :p33, USUARIO_MODIF = :p34, FECHA_MODIF = :p35,
> > ID_TURNO_JORNADA = :p36, DIAGNOSTICO = :p37, MEDICAMENTO = :p38,
> > CERTIFICADO_DISC = :p39 WHERE ID_REGISTRO = :p40;:p0 = 1, :p1 =
> > 'F', :p2 = 31548444, :p3 = 2, :p4 = 'S', :p5 = 'S', :p6 = 'S', :p7 =
> > 'INGRESI', :p8 = 'OTRAS', :p9 = 10, :p10 = 'S', :p11 = 'REGULAR', :p12
> > = 'BUENO', :p13 = 'MUY BUENO', :p14 = 'MUY BUENO', :p15 = 'MUY
> > BUENO', :p16 = 'S', :p17 = 'BUENO', :p18 = 'REGULAR', :p19 = 'EXPEC
> > LABORALES', :p20 = 'TIEMPO LIBRE', :p21 = 'EXPECTATIVAS', :p22 =
> > 'NUEVAS OBSERVACIONES MODIFICADAS', :p23 = 'OBSER', :p24 =
> > 'ACTIVIDAD', :p25 = 'CUALES MODIFICADO', :p26 = 'OBSERVACIONES', :p27
> > = 1, :p28 = 'RELACION INTERPERSONAL', :p29 = 27/07/2010 12:00:00
> > a.m., :p30 = 1, :p31 = 3, :p32 = 'SOLIDARIDAD', :p33 = 27/07/2010
> > 10:06:01 a.m., :p34 = 'SOLIDARIDAD', :p35 = 04/08/2010 08:35:31
> > a.m., :p36 = 2, :p37 = 'DIAG', :p38 = 'MEDICAMEBNTE', :p39 = 'S', :p40
> > = 63
> >
> > NHibernate: UPDATE SOLIDARIDAD.T_DISC_GRUPO_FLIAR_CONVIVIENTE SET
> > CANTIDAD = :p0, USUARIO_ALTA = :p1, FECHA_ALTA = :p2, USUARIO_MODIF
> > = :p3, FECHA_MODIF = :p4 WHERE ID_REGISTRO = :p5 AND ID_TIPO_FAMILIAR
> > = :p6;:p0 = 1, :p1 = 'SOLIDARIDAD', :p2 = 04/08/2010 08:35:35
> > a.m., :p3 = NULL, :p4 = NULL, :p5 = 63, :p6 = 2
> >
> > NHibernate: UPDATE SOLIDARIDAD.T_DISC_GRUPO_FLIAR_CONVIVIENTE SET
> > ID_REGISTRO = :p0 WHERE ID_REGISTRO = :p1 AND ID_TIPO_FAMILIAR
> > = :p2;:p0 = 63, :p1 = 63, :p2 = 3
> >
> > NHibernate: UPDATE SOLIDARIDAD.T_DISC_GRUPO_FLIAR_CONVIVIENTE SET
> > ID_REGISTRO = :p0 WHERE ID_REGISTRO = :p1 AND ID_TIPO_FAMILIAR
> > = :p2;:p0 = 63, :p1 = 63, :p2 = 2
> >
> > 2. Al intentar borrar un familiar, no lo borra(falta el delete). Este
> > es el SQL que genera:
> >
> > NHibernate: UPDATE SOLIDARIDAD.T_DISC_REGISTRO_PERFIL_LABORAL SET
> > ID_TIPO_DOCUMENTO = :p0, ID_SEXO = :p1, NRO_DOCUMENTO = :p2,
> > ID_TIPO_CAUSA_DISC = :p3, CAPACITACION = :p4, EMPLEO = :p5, PENSION
> > = :p6, INGRESO_POR_TRAMITE = :p7, OTRA_REF_DOMICILIO = :p8,
> > EDAD_COMIENZO_DISC = :p9, MOVILIDAD_CON_IND = :p10, RESOLUCION_PROB
> > = :p11, MANEJO_ADM_DINERO = :p12, MANEJO_PC = :p13, MANEJO_INTERNET
> > = :p14, MANEJO_OFFICE = :p15, CONOC_USO_TIPOS_TRANSP = :p16,
> > COMUNICACION = :p17, POSIBILIDAD_ELECCION = :p18,
> > EXPECTATIVAS_LABORALES = :p19, TIEMPO_LIBRE = :p20,
> > EXPECT_TAREAS_DESEMPENIAR = :p21, OBSERVACIONES_FICHA = :p22,
> > CURSOS_ADEC_ACCESO = :p23, CURSOS_CAPACITADO_PARA = :p24,
> > TRABAJOS_ADEC_ACCESO = :p25, TRABAJOS_OBSERVAC = :p26, ID_TIPO_JORNADA
> > = :p27, RELAC_INTERPERSONAL = :p28, FECHA_ENTREVISTA = :p29,
> > ID_ENTREVISTADOR = :p30, ID_TIPO_ENTREVISTA = :p31, USUARIO_ALTA
> > = :p32, FECHA_ALTA = :p33, USUARIO_MODIF = :p34, FECHA_MODIF = :p35,
> > ID_TURNO_JORNADA = :p36, DIAGNOSTICO = :p37, MEDICAMENTO = :p38,
> > CERTIFICADO_DISC = :p39 WHERE ID_REGISTRO = :p40;:p0 = 1, :p1 =
> > 'F', :p2 = 31548444, :p3 = 2, :p4 = 'S', :p5 = 'S', :p6 = 'S', :p7 =
> > 'INGRESI', :p8 = 'OTRAS', :p9 = 10, :p10 = 'S', :p11 = 'REGULAR', :p12
> > = 'BUENO', :p13 = 'MUY BUENO', :p14 = 'MUY BUENO', :p15 = 'MUY
> > BUENO', :p16 = 'S', :p17 = 'BUENO', :p18 = 'REGULAR', :p19 = 'EXPEC
> > LABORALES', :p20 = 'TIEMPO LIBRE', :p21 = 'EXPECTATIVAS', :p22 =
> > 'NUEVAS OBSERVACIONES MODIFICADAS', :p23 = 'OBSER', :p24 =
> > 'ACTIVIDAD', :p25 = 'CUALES MODIFICADO', :p26 = 'OBSERVACIONES', :p27
> > = 1, :p28 = 'RELACION INTERPERSONAL', :p29 = 27/07/2010 12:00:00
> > a.m., :p30 = 1, :p31 = 3, :p32 = 'SOLIDARIDAD', :p33 = 27/07/2010
> > 10:06:01 a.m., :p34 = 'SOLIDARIDAD', :p35 = 04/08/2010 08:43:13
> > a.m., :p36 = 2, :p37 = 'DIAG', :p38 = 'MEDICAMEBNTE', :p39 = 'S', :p40
> > = 63
> >
> > NHibernate: UPDATE SOLIDARIDAD.T_DISC_GRUPO_FLIAR_CONVIVIENTE SET
> > CANTIDAD = :p0, USUARIO_ALTA = :p1, FECHA_ALTA = :p2, USUARIO_MODIF
> > = :p3, FECHA_MODIF = :p4 WHERE ID_REGISTRO = :p5 AND ID_TIPO_FAMILIAR
> > = :p6;:p0 = 1, :p1 = 'SOLIDARIDAD', :p2 = 04/08/2010 08:43:13
> > a.m., :p3 = NULL, :p4 = NULL, :p5 = 63, :p6 = 1
> >
> > NHibernate: UPDATE SOLIDARIDAD.T_DISC_GRUPO_FLIAR_CONVIVIENTE SET
> > CANTIDAD = :p0, USUARIO_ALTA = :p1, FECHA_ALTA = :p2, USUARIO_MODIF
> > = :p3, FECHA_MODIF = :p4 WHERE ID_REGISTRO = :p5 AND ID_TIPO_FAMILIAR
> > = :p6;:p0 = 1, :p1 = 'SOLIDARIDAD', :p2 = 04/08/2010 08:43:13
> > a.m., :p3 = NULL, :p4 = NULL, :p5 = 63, :p6 = 2
> >
> > NHibernate: UPDATE SOLIDARIDAD.T_DISC_GRUPO_FLIAR_CONVIVIENTE SET
> > ID_REGISTRO = :p0 WHERE ID_REGISTRO = :p1 AND ID_TIPO_FAMILIAR
> > = :p2;:p0 = 63, :p1 = 63, :p2 = 1
> >
> > NHibernate: UPDATE SOLIDARIDAD.T_DISC_GRUPO_FLIAR_CONVIVIENTE SET
> > ID_REGISTRO = :p0 WHERE ID_REGISTRO = :p1 AND ID_TIPO_FAMILIAR
> > = :p2;:p0 = 63, :p1 = 63, :p2 = 2
> >
> > 3. Si quiero borrar todos los familiarea, ahi si funciona. los borra.
> > SQL generado:
> > NHibernate: UPDATE SOLIDARIDAD.T_DISC_REGISTRO_PERFIL_LABORAL SET
> > ID_TIPO_DOCUMENTO = :p0, ID_SEXO = :p1, NRO_DOCUMENTO = :p2,
> > ID_TIPO_CAUSA_DISC = :p3, CAPACITACION = :p4, EMPLEO = :p5, PENSION
> > = :p6, INGRESO_POR_TRAMITE = :p7, OTRA_REF_DOMICILIO = :p8,
> > EDAD_COMIENZO_DISC = :p9, MOVILIDAD_CON_IND = :p10, RESOLUCION_PROB
> > = :p11, MANEJO_ADM_DINERO = :p12, MANEJO_PC = :p13, MANEJO_INTERNET
> > = :p14, MANEJO_OFFICE = :p15, CONOC_USO_TIPOS_TRANSP = :p16,
> > COMUNICACION = :p17, POSIBILIDAD_ELECCION = :p18,
> > EXPECTATIVAS_LABORALES = :p19, TIEMPO_LIBRE = :p20,
> > EXPECT_TAREAS_DESEMPENIAR = :p21, OBSERVACIONES_FICHA = :p22,
> > CURSOS_ADEC_ACCESO = :p23, CURSOS_CAPACITADO_PARA = :p24,
> > TRABAJOS_ADEC_ACCESO = :p25, TRABAJOS_OBSERVAC = :p26, ID_TIPO_JORNADA
> > = :p27, RELAC_INTERPERSONAL = :p28, FECHA_ENTREVISTA = :p29,
> > ID_ENTREVISTADOR = :p30, ID_TIPO_ENTREVISTA = :p31, USUARIO_ALTA
> > = :p32, FECHA_ALTA = :p33, USUARIO_MODIF = :p34, FECHA_MODIF = :p35,
> > ID_TURNO_JORNADA = :p36, DIAGNOSTICO = :p37, MEDICAMENTO = :p38,
> > CERTIFICADO_DISC = :p39 WHERE ID_REGISTRO = :p40;:p0 = 1, :p1 =
> > 'F', :p2 = 31548444, :p3 = 2, :p4 = 'S', :p5 = 'S', :p6 = 'S', :p7 =
> > 'INGRESI', :p8 = 'OTRAS', :p9 = 10, :p10 = 'S', :p11 = 'REGULAR', :p12
> > = 'BUENO', :p13 = 'MUY BUENO', :p14 = 'MUY BUENO', :p15 = 'MUY
> > BUENO', :p16 = 'S', :p17 = 'BUENO', :p18 = 'REGULAR', :p19 = 'EXPEC
> > LABORALES', :p20 = 'TIEMPO LIBRE', :p21 = 'EXPECTATIVAS', :p22 =
> > 'NUEVAS OBSERVACIONES MODIFICADAS', :p23 = 'OBSER', :p24 =
> > 'ACTIVIDAD', :p25 = 'CUALES MODIFICADO', :p26 = 'OBSERVACIONES', :p27
> > = 1, :p28 = 'RELACION INTERPERSONAL', :p29 = 27/07/2010 12:00:00
> > a.m., :p30 = 1, :p31 = 3, :p32 = 'SOLIDARIDAD', :p33 = 27/07/2010
> > 10:06:01 a.m., :p34 = 'SOLIDARIDAD', :p35 = 04/08/2010 08:45:03
> > a.m., :p36 = 2, :p37 = 'DIAG', :p38 = 'MEDICAMEBNTE', :p39 = 'S', :p40
> > = 63
> >
> > NHibernate: DELETE FROM SOLIDARIDAD.T_DISC_GRUPO_FLIAR_CONVIVIENTE
> > WHERE ID_REGISTRO = :p0 AND ID_TIPO_FAMILIAR = :p1;:p0 = 63, :p1 = 1
> >
> > NHibernate: DELETE FROM SOLIDARIDAD.T_DISC_GRUPO_FLIAR_CONVIVIENTE
> > WHERE ID_REGISTRO = :p0 AND ID_TIPO_FAMILIAR = :p1;:p0 = 63, :p1 = 2
> >
> > NHibernate: DELETE FROM SOLIDARIDAD.T_DISC_GRUPO_FLIAR_CONVIVIENTE
> > WHERE ID_REGISTRO = :p0 AND ID_TIPO_FAMILIAR = :p1;:p0 = 63, :p1 = 3
> >
> > ***************Mapeo(solo les copio una parte, ya que es muy
> > largo):********************
> > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
> >                    assembly="Discapacidad_Empleo"
> >                    namespace="Discapacidad_Empleo.Clases">
> >   <class name="Disc_Registro_Perfil_Laboral"
> > table="T_DISC_REGISTRO_PERFIL_LABORAL" schema="SOLIDARIDAD">
> >     <id name="Id_registro" type="int" unsaved-value="0">
> >       <column name="ID_REGISTRO" sql-type="number"/>
> >       <generator class="sequence">
> >         <param name="sequence">SEC_DISC_ID_REGISTRO</param>
> >       </generator>
> >     </id>
> >
> >    (...)
> >
> >     <bag cascade="all-delete-orphan" lazy="false"
> > name="GrupoFamiliarConviviente" table="T_DISC_GRUPO_FLIAR_CONVIVIENTE"
> >
> >       <key not-null="true" column="ID_REGISTRO"/>
> >       <one-to-many class="Disc_Grupo_Fliar_Conviviente"/>
> >     </bag>
> >   (....)
> >
> > ***********Metodo de Modificacion****************
> > public Object updateRegistroPerfilLaboral(Object registro)
> >         {
> >             session = HibernateUtil.SessionFactory.OpenSession();
> >             ITransaction tx = session.BeginTransaction();
> >
> >             session.SaveOrUpdate(registro);
> >             session.Flush();
> >             tx.Commit();
> >
> >             session.Close();
> >             return null;
> >         }
> >
> > Muchas gracias
> > Erika
>
> --
> Para escribir al Grupo, hágalo a esta dirección:
> [email protected]
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a