Hola Erika

El problema tal vez sea de un poco de óptica en como trabaja NHibernate

Mira cuando recuperas una entidad y estas trabajando dentro un contexto
donde la session esta disponible

(y tienes configurado tu entidad lazy = true)

Al hacer algo como persona.empleados.count  te devuelve 0 si no
tiene ningún u el numero de entidades en la colección esto lo hace
transparente por que trabaja sobre demanda o sea al necesitar saber cuando
objetos hay en la colección empleado el framework automáticamente va hacia
el repo (luego a donde este persistido)  y las trae para hacer la operación
que tu requieres

Por otro lado si recuperas la entidad y al siguiente paso no estas en el
contexto de la session entonces te tira el error que nos indicas


El 27 de septiembre de 2010 13:30, Fabio Maulo <[email protected]>escribió:

> Erika,
> Si yo lograra entender lo que estas leyendo solo con
> IList listaPersonas = q.List();
> me dedicaría a otro laburo y seguro tendría un fangote de guita.
>
> Para que entiendas, cuando necesitas ayuda:
> 1) si tenes una exception tenes que pasar el texto completo del mensaje y
> no una parte de el.
> 2) si la exception tiene inner-exception tenes que pasar ambos mensages
> completo
> 3) si hablas de Empleados y Personas no envies lineas de codigo que no
> muestran nada de lo que estas hablando
> 4) si alguien te dice que es probable (en mi caso no dije probable porque
> estoy seguro) que tenes un problema con el manejo de la session, trata de
> explicar como estas manejando la session.
>
>
>
> 2010/9/27 Erika Fernández <[email protected]>
>
> FAbio: No estoy cerrando session, apenas recupero las personas, me
>> fijo en sus empleados. En esta línea:
>>
>>  IList listaPersonas = q.List();
>>
>> José: Necesito buscar un empleado por nro de documento, el tema es que
>> el empleado no tiene un nro de documento, pero si la persona (que es
>> la clase que contiene todos los datos personales de los empleados) Una
>> persona puede tener 1 a muchos empleados (con sus fechas de baja, en
>> realidad tiene 1 solo valido). Al consultar la clase Personas,
>> necesito sus intancias de empleados, pero como te digo, algunas
>> personas no son empleados y no tienen ninguna instancia de empleados.
>> Entoces mi duda seria como recupero los empleados de esa persona.
>>
>> Gracias nuevamente
>>
>> On 27 sep, 15:08, Fabio Maulo <[email protected]> wrote:
>> > El problemas que tenes es otro.
>> > Estas cerrando la session.
>> >
>> > 2010/9/27 Erika Fernández <[email protected]>
>> >
>> >
>> >
>> >
>> >
>> > > Mi problema es que al recuperar una persona, si tiene,  necesito los
>> > > empleados, pero como no puedo configurar lazy=false porque en algunos
>> > > casos no tiene empleados y me salta la excepcion "could not initialize
>> > > a collection", no se como cargar dinamicamente los empleados cuando
>> > > existan.
>> >
>> > > Muchas gracias por la ayuda!
>> >
>> > > On 27 sep, 14:30, José F. Romaniello <[email protected]> wrote:
>> > > > El 27 de septiembre de 2010 14:20, Erika Fernández
>> > > > <[email protected]>escribió:
>> >
>> > > > > Necesito levantar dinamicamente una coleccion.
>> > > > > Es asi.... tengo objetos personas los cuales tiene un bag de
>> > > > > empleados  (0 a muchos empleados).
>> > > > > Como muchas personas no tienen en realidad ningun empleados, no
>> puedo
>> > > > > configurar lazy=false en el bag de empleados en el xml de
>> personas.
>> >
>> > > > Hay como 3 cosas diferentes :
>> >
>> > > >    - lazy=false/true es para que la colección de empleados, se
>> cargue
>> > > >    inmediatamente cuando cargas el objeto Persona... Lo cual para el
>> 98%
>> > > de los
>> > > >    casos es innecesario, y practicamente todos usamos el valor por
>> > > defecto
>> > > >    lazy="true"... que es lo mismo que no poner nada.
>> > > >    - El hecho de que una persona tenga 0 empleados y no puedas poner
>> > > >    lazy="false", tampoco tiene mucho que ver.. salvo que tengas una
>> > > combinación
>> > > >    de lazy="false" + fetch="join" (no recomendable).
>> > > >    - Con los valores por defecto todo debería funcionar bien, cual
>> es el
>> > > >    problema que tenes?
>> >
>> > > > > ¿Como puedo hacerlo? Por lo que estuve leyendo hay 3 librerias
>> > > > > distintas para hacer esto. Yo tengo como referencia en mi proyecto
>> > > > > LinFu.
>> >
>> > > > No tiene nada que ver. Vamos a decir que nhibernate necesita generar
>> > > proxies
>> > > > para *many-to-one,* que son lazy. PAra el tema de las collections
>> > > nhibernate
>> > > > no utiliza proxies dinámicos. Osea que en este caso no te preocupes
>> por
>> > > > esto.
>> >
>> > > --
>> > > 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- Ocultar texto de la cita -
>> >
>> > - Mostrar texto de la cita -
>>
>> --
>> 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

Responder a