Hola Tano,

Esto quiere decir que no es recomendable usar campos CHAR para el
discriminator? (en estos campos SQLServer completa con espacios a la derecha
pero creo que ya sabrias esto)

Es razonable que NH se confunda ya que graba un "Transferencia" y obtiene un
"Transferencia          " pero tambien seria bueno que NH no se fuera de
mambo con esto puesto que es bastante comun.

Por ultimo, segun creo, los indices sobre CHAR son mas eficientes (en
velocidad de lookup, no en almacenamiento) que sobre VARCHAR y es altamente
probable que esta columna sea indexada puesto que participa del query, en
general.

Como siempre, le pertenezco...

Gracias

----------------------------------
Carlos Peix

2010/1/12 Fabio Maulo <[email protected]>

> ahora me gustó ;)
>
> El 12 de enero de 2010 13:34, Edgar Ramos <[email protected]> escribió:
>
> Estimado Fabio
>>
>> Hice exactamente lo que me comento Carlos Peix, modifique el archivo
>> de mapeo de la clase base abstracta, y creo que el kit estaba en
>> cambiar de tipo de dato el campo discriminador, yo lo tenia en char de
>> 60, y cuando guardaba en la bdd mi objeto por ejemplo transferencia
>> este se guardaba con espacios en blanco a la derecha hasta completar
>> los 60, cambie este a varchar de 60, ahora puedo recuperar todos mis
>> objetos que implementan movimiento
>>
>> El error era el siguiente
>>
>> Object with id: 10 was not of the specified subclass:
>> PYTWINDOWS.Entities.Movimiento (Discriminator was: 'Transferencia
>>      '), aqui esta claro, bueno ahora esta claro, "los espacios en
>> blanco"
>>
>> Pero al buscar mi objeto "from Transferencia", me retornaba todos los
>> objetos transferencia, es por eso que nunca se me ocurrio cambiar el
>> tipo de dato del campo discriminador
>>
>> saludos y gracias nuevamente
>>
>> El mensaje de error como lo postee anteriormente era
>>
>> 12 de enero de 2010 11:02, Fabio Maulo <[email protected]> escribió:
>> > Y cual fue la solución ? (vendría bien por si le pasa lo mismo a alguien
>> > mas)
>> >
>> > El 12 de enero de 2010 12:59, Edgar Ramos <[email protected]>
>> escribió:
>> >>
>> >> Gracias a todos por sus respuestas, y gracias Carlos  el problema se
>> >> ha solucionado
>> >>
>> >> El día 12 de enero de 2010 10:06, Edgar Ramos <[email protected]>
>> >> escribió:
>> >> > Entendido este momento estoy modificando, gracias por las sugerencias
>> >> >
>> >> > El día 12 de enero de 2010 09:56, Carlos Peix <[email protected]
>> >
>> >> > escribió:
>> >> >> Ops, ahora que releo, tambien podrias escribir esta parte asi:
>> >> >> <many-to-one name="Origen" class="Ambiente" />
>> >> >> <many-to-one name="Destino" class="Ambiente" />
>> >> >> <many-to-one name="User" class="Usuario" />
>> >> >> ----------------------------------
>> >> >> Carlos Peix
>> >> >> cel: 15-4406-7571
>> >> >>
>> >> >>
>> >> >> 2010/1/12 Carlos Peix <[email protected]>
>> >> >>>
>> >> >>> Hola Edgard,
>> >> >>> Como consejo lateral, el mismo mapping podrias escribirlo asi:
>> >> >>> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
>> >> >>> namespace="PYTWINDOWS.Entities" assembly="PYTWINDOWS">
>> >> >>> <class name="Movimiento" table="tb_cts_Movimiento"
>> >> >>> discriminator-value="Ninguno" >
>> >> >>> <id name="IdMovimiento">
>> >> >>> <generator class="identity"/>
>> >> >>> </id>
>> >> >>> <discriminator column="Tipo" />
>> >> >>> <many-to-one name="Origen" class="Ambiente" column="Origen" />
>> >> >>> <many-to-one name="Destino" class="Ambiente" column="Destino" />
>> >> >>> <many-to-one name="User" class="Usuario" column="Usuario" />
>> >> >>> <property name="Fecha"/>
>> >> >>> <property name="Numeracion"/>
>> >> >>> <bag name="Lineas" inverse="true" cascade="all-delete-orphan">
>> >> >>> <key column="idMovimiento"/>
>> >> >>> <one-to-many class ="LineaMovimiento"/>
>> >> >>> </bag>
>> >> >>> <subclass name="Transferencia" discriminator-value="Transferencia"
>> >
>> >> >>> </subclass>
>> >> >>> <subclass name="Produccion" discriminator-value="Produccion">
>> >> >>> </subclass>
>> >> >>> <subclass name="Venta" discriminator-value="Venta">
>> >> >>> <property name="Descuento"/>
>> >> >>> <property name="FormaPago"/>
>> >> >>> <property name="TipoDocumento"/>
>> >> >>> </subclass>
>> >> >>> <subclass name="Ingreso" discriminator-value="Ingreso">
>> >> >>> </subclass>
>> >> >>> </class>
>> >> >>> </hibernate-mapping>
>> >> >>> Y queda mas claro, fijate que defini el default-namespace y
>> >> >>> default-assembly en el encabezado.
>> >> >>> Por otro lado, me llama la atencion que tengas discriminator-value
>> >> >>> para la
>> >> >>> clase base, acaso es posible que tengas una instancia de
>> Movimiento?
>> >> >>> si no
>> >> >>> es asi, entonces el discriminator-value no te aporta nada y yo lo
>> >> >>> sacaria de
>> >> >>> la clase base.
>> >> >>> Luego, para hacer una prueba facil, proba de usar el tipo VARCHAR
>> para
>> >> >>> la
>> >> >>> columna del discriminator, eso va a hacer que no molesten los
>> espacios
>> >> >>> en
>> >> >>> blanco pero, como contrapartida, los indices sobre columnas VARCHAR
>> no
>> >> >>> son
>> >> >>> tan eficientes como aquellos sobre columnas CHAR (o mejor aun,
>> INT),
>> >> >>> pero al
>> >> >>> menos sirve para que puedas probar.
>> >> >>> Luego de hacer ese cambio, por supuesto, borra nuevamente la base
>> de
>> >> >>> datos.
>> >> >>> ----------------------------------
>> >> >>> Carlos Peix
>> >> >>>
>> >> >>
>> >> >> --
>> >> >> 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
>
-- 
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