http://fabiomaulo.blogspot.com/2009/05/empezando-con-nh-mappings.html

dos frase:
No usen default-cascade=”save-update”; el cascade hay que declararlo bien y
donde corresponde.
Recuerden que el cascade no es un solo valor (es comma-separated-values) y
no es todo all-delete-orphan.

LOL!!


2010/6/18 Jose Selesan <[email protected]>

> Tenés razón. El curso se da de alta antes. Se me pasó eso.
>
>
> 2010/6/18 Fabio Maulo <[email protected]>
>
>> o sea que agregando un Alumno podes dar de alta un nuevo Curso ?
>>
>> 2010/6/18 Jose Selesan <[email protected]>
>>
>>> Te paso un extracto de la clase y el mapeo
>>>
>>> public class Alumno: Persona
>>> {
>>>   public virtual string Matricula { get; set; }
>>>   public virtual Curso Curso { get; set; }
>>> }
>>>
>>> ***
>>> <class name="Persona" table="Personas">
>>>
>>>     <id name="Id" column="ID">
>>>       <generator class="guid.comb" />
>>>     </id>
>>>     <property name="Apellido" />
>>>     <property name="Nombre" />
>>>
>>>     <joined-subclass name="Alumno" table="Alumnos">
>>>        <key column="IDPersona"/>
>>>        <many-to-one name="Curso" column="IDCurso" cascade="save-update"/>
>>>     </joined-subclass>
>>> </class>
>>>
>>>
>>>
>>>
>>>
>>> 2010/6/17 José F. Romaniello <[email protected]>
>>>
>>>> Ok, entonces no es lo que yo pensaba, podrías igual mostrar la clase
>>>> Alumno?
>>>>
>>>> El 17 de junio de 2010 20:14, Jose Selesan <[email protected]>escribió:
>>>>
>>>>> Hola José. Sí, estoy usando Save. Voy a tener que leer un poco sobre la
>>>>> diferencia entre Save y Persist.
>>>>>
>>>>> Gracias por el dato.
>>>>>
>>>>> 2010/6/17 José F. Romaniello <[email protected]>
>>>>>
>>>>>> Te quería preguntar si podrías mostrar la clase alumno por un lado, y
>>>>>> por otro lado, si estas seguro que estas llamando a Save y no a Persist
>>>>>> (presentimiento).
>>>>>>
>>>>>>
>>>>>> El 17 de junio de 2010 18:27, Jose Selesan <[email protected]>escribió:
>>>>>>
>>>>>> Efectivamente. Ahora la pregunta es, como puedo evitar el cascade
>>>>>>> sobre alumno (que ahí ni lo tocó) y grabar simplemente la
>>>>>>> notificación?
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> El 17/06/10, Carlos Cocom <[email protected]> escribió:
>>>>>>> > Hola Jose
>>>>>>> >
>>>>>>> > Me parece que esto es por que en la entidad alumno tienes tienes
>>>>>>> una
>>>>>>> > propiedad curso que esta relacionado supongo a otra entidad y en
>>>>>>> esta la
>>>>>>> > definiste como lazy = "true".
>>>>>>> >
>>>>>>> > Al momento de guardar en session.save aun no se ha terminado de
>>>>>>> cargar la
>>>>>>> > entidad curso
>>>>>>> >
>>>>>>> > mas detalles
>>>>>>> http://nhforge.org/doc/nh/en/index.html#collections-lazy
>>>>>>> >
>>>>>>> > Saludos
>>>>>>> >
>>>>>>> >
>>>>>>> >
>>>>>>> >
>>>>>>> > El 17 de junio de 2010 14:56, Jose Selesan <[email protected]>
>>>>>>> escribió:
>>>>>>> >
>>>>>>> >> Gente, me está sucediendo algo. Tengo una entidad Alumno con un
>>>>>>> muchos a
>>>>>>> >> muchos con la entidad Padre, por otro lado, tengo una entidad
>>>>>>> >> NotificacionPadre, con un many-to-one a Padre:
>>>>>>> >>
>>>>>>> >>   <class name="Notificacion" table="Notificaciones">
>>>>>>> >>
>>>>>>> >>     <id name="Id" column="ID">
>>>>>>> >>       <generator class="guid.comb" />
>>>>>>> >>     </id>
>>>>>>> >>
>>>>>>> >>      <discriminator column="Tipo" type="string" />
>>>>>>> >>
>>>>>>> >>     <property name="Fecha"/>
>>>>>>> >>     <property name="Texto" length="1000"/>
>>>>>>> >>
>>>>>>> >>         <subclass discriminator-value="1"
>>>>>>> name="NotificacionGeneral">
>>>>>>> >>         </subclass>
>>>>>>> >>
>>>>>>> >>         <subclass discriminator-value="2"
>>>>>>> name="NotificacionPadre">
>>>>>>> >>             <many-to-one name="Padre" column="IDPadre"
>>>>>>> cascade="none"
>>>>>>> >> fetch="join" />
>>>>>>> >>         </subclass>
>>>>>>> >>   </class>
>>>>>>> >>
>>>>>>> >> Ahora estoy haciendo algo similar a esto:
>>>>>>> >>
>>>>>>> >> //tengo un id que es el Guid de un alumno
>>>>>>> >> var alumno = Session.Get<Alumno>(id);
>>>>>>> >> foreach(var padre in alumno.Padres)
>>>>>>> >> {
>>>>>>> >>   var notificacion = new NotificacionPadre{
>>>>>>> >>      Fecha = DateTime.Today,
>>>>>>> >>      Texto = texto,
>>>>>>> >>      Padre = padre
>>>>>>> >>   };
>>>>>>> >>   Session.Save(notificacion);
>>>>>>> >> }
>>>>>>> >>
>>>>>>> >> Todo esto dentro de una transacción.
>>>>>>> >>
>>>>>>> >> Ahora bien, me está dando una PersistentObjectException con el
>>>>>>> mensaje:
>>>>>>> >> *Uninitialized
>>>>>>> >> proxy passed to save(). Object:
>>>>>>> CursoProxyd41d419af95040a38594f99fcfa4f0e7
>>>>>>> >> *Donde Curso es una propiedad Lazy del Alumno, lo que no entiendo
>>>>>>> es por
>>>>>>> >> qué quiere hacer un cascade al guardar la Notificacion. ¿Qué
>>>>>>> estaré
>>>>>>> >> haciendo
>>>>>>> >> mal?
>>>>>>> >>
>>>>>>> >> Gracias!
>>>>>>> >>
>>>>>>> >>  --
>>>>>>> >> 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
>>>>>>>
>>>>>>> --
>>>>>>> Enviado desde mi dispositivo móvil
>>>>>>>
>>>>>>> Lic. Jose Selesan
>>>>>>> Desarrollador Gold Cinco Estrellas
>>>>>>> http://jose-selesan.blogspot.com
>>>>>>>
>>>>>>> --
>>>>>>> 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
>>>>>>
>>>>>
>>>>>  --
>>>>> 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
>>>>
>>>
>>>  --
>>> Para escribir al Grupo, hágalo a esta dirección:
>>> [email protected]
>>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>>>
>>
>>
>>
>> --
>> Fabio Maulo
>>
>>  --
>> 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
>



-- 
Fabio Maulo

-- 
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