type="AnsiString" El 12 de enero de 2010 13:48, Carlos Peix <[email protected]> escribió:
> 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 > -- 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
