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 2010/1/12 Edgar Ramos <[email protected]> > Gracias por contestar estaba preocupado, pense que me sacaron de la lista.. > > Bueno voy a borrrar todo de la bdd y a persistir de nuevo mis objetos, > he hecho tantas cosas en el mape y bueno adjunto lo requerido, archivo > de mapeo de la clase base abstracta Movimiento, de la cual heredan > Produccion, Venta, Ingreso y Transferencia, utilizo una sola tabla > para toda la estructura > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> > <class name="PYTWINDOWS.Entities.Movimiento, PYTWINDOWS" > table="tb_cts_Movimiento" discriminator-value="Ninguno" > > <id name="IdMovimiento" column="idMovimiento" > > <generator class="identity"/> > </id> > <discriminator column="Tipo" type="string" /> > > <many-to-one name="Origen" class="PYTWINDOWS.Entities.Ambiente, > PYTWINDOWS" column="Origen" /> > <many-to-one name="Destino" class="PYTWINDOWS.Entities.Ambiente, > PYTWINDOWS" column="Destino" /> > <many-to-one name="User" class="PYTWINDOWS.Entities.Usuario, > PYTWINDOWS" column="Usuario" /> > > <property name="Fecha" column="Fecha" type="DateTime"/> > <property name="Numeracion" column="NumeroDocumento" type="Int32"/> > > <bag name="Lineas" inverse="true" cascade="all-delete-orphan"> > <key column="idMovimiento"/> > <one-to-many class ="PYTWINDOWS.Entities.LineaMovimiento, > PYTWINDOWS"/> > </bag> > > <subclass name="PYTWINDOWS.Entities.Transferencia, PYTWINDOWS" > discriminator-value="Transferencia" > > </subclass> > <subclass name="PYTWINDOWS.Entities.Produccion, PYTWINDOWS" > discriminator-value="Produccion"></subclass> > <subclass name="PYTWINDOWS.Entities.Venta, PYTWINDOWS" > discriminator-value="Venta"> > <property name="Descuento" column="Descuento"/> > <property name="FormaPago" column="FormaPago"/> > <property name="TipoDocumento" column="TipoDocumento"/> > </subclass> > <subclass name="PYTWINDOWS.Entities.Ingreso, PYTWINDOWS" > discriminator-value="Ingreso"></subclass> > > </class> > > </hibernate-mapping> > > El día 12 de enero de 2010 08:52, José F. Romaniello > <[email protected]> escribió: > > podrias mostrar el mapping? > > > > El 11 de enero de 2010 13:10, Marcos Mellibovsky <[email protected]> > > escribió: > >> > >> Hola Edgar > >> No tendras un registro metido o corregido a mano que tiene mal el > >> discriminador? > >> fijate que en el error: PYTWINDOWS.Entities.Movimiento (Discriminator > was: > >> 'Transferencia ') > >> hay un espacio al final > >> > >> Ing. Marcos Mellibovsky > >> ARSoft Consultoría Informática > >> [email protected] > >> 0351 155630801 > >> msn:[email protected] <msn%[email protected]> > >> > >> > >> > >> 2010/1/11 Edgar Ramos <[email protected]> > >>> > >>> Bueno no he podido solucionar mi problema, traere cada uno de los > >>> objetos persistidos por separado, hay alguno forma de hacer esto > >>> por ejemplo un where por discriminador ='Transferencia' or > >>> discriminador = 'Produccion', etc para traer todos de la base de datos > >>> y ponerlos en una lista > >>> > >>> gracias por los comentarios > >>> > >>> El día 8 de enero de 2010 14:38, Edgar Ramos <[email protected]> > >>> escribió: > >>> > He hecho la misma consulta pero especificando la clase contreta por > >>> > ejemplo > >>> > > >>> > var mov = session.CreateQuery("from > >>> > Transferencia").List<Transferencia>(); > >>> > > >>> > y todo va bien me retorna todos los movimientos que son de tipo > >>> > transferencia, el problema sigue dandose al llamar a > >>> > > >>> > var mov = session.CreateQuery("from Movimiento").List<Movimiento>(); > >>> > para que me retorno todos los objetos que heredan de Movimiento > >>> > > >>> > El día 8 de enero de 2010 12:09, Edgar Ramos <[email protected]> > >>> > escribió: > >>> >> Quise aplicar lo que dice este link > >>> >> > >>> >> > >>> >> > http://blog.schuager.com/2008/12/polymorphic-query-using-interfaces.html > >>> >> > >>> >> Pero yo ya tengo mi clase abstracta mapeada, obviamente apuntando a > la > >>> >> tabla especifica, cree otro archivo haciendo lo que sugiere el link > y > >>> >> como era de esperar nhibernate me dice que estoy duplicando el mapeo > >>> >> Alguna otra sugerencia ? > >>> >> > >>> >> > >>> >> El día 7 de enero de 2010 09:35, Edgar Ramos <[email protected]> > >>> >> escribió: > >>> >>> La consulta basicamente es esto > >>> >>> > >>> >>> var mov = session.CreateQuery("from > Movimiento").List<Movimiento>(); > >>> >>> > >>> >>> Movimiento es la clase abstracta de la cual heredan movimientos > >>> >>> especificos como Transferencia, Produccion, Ventas, etc > >>> >>> > >>> >>> Este momento estoy leyendo el link que German envio, gracias por > toda > >>> >>> la ayuda > >>> >>> > >>> >>> El día 6 de enero de 2010 19:05, José F. Romaniello > >>> >>> <[email protected]> escribió: > >>> >>>> mostra como haces la consulta > >>> >>>> > >>> >>>> El 6 de enero de 2010 20:24, Edgar Ramos <[email protected]> > >>> >>>> escribió: > >>> >>>>> > >>> >>>>> Gracias por la gentil ayuda > >>> >>>>> > >>> >>>>> He utilizado la siguiente estrategia de herencia Table Per > Subclass > >>> >>>>> Hierarchy, los objetos los he podido grabar en la base de datos > sin > >>> >>>>> problemas, > >>> >>>>> > >>> >>>>> Mi tabla almacena movimientos pudiendo ser estos Transferencias, > >>> >>>>> Ventas, Ingresos, etc, y precisamente este es su discriminador, > >>> >>>>> requiero mostrar todos los movimientos realizados en una fecha > >>> >>>>> especifica, pero obtengo el siguiente mensaje de error > >>> >>>>> > >>> >>>>> Object with id: 10 was not of the specified subclass: > >>> >>>>> PYTWINDOWS.Entities.Movimiento (Discriminator was: 'Transferencia > >>> >>>>> ') > >>> >>>>> > >>> >>>>> Para cualquier fecha (una y solo una fecha) a buscar movimientos > >>> >>>>> obtendre un promedio de 20 movimientos no mas > >>> >>>>> > >>> >>>>> Necesariamente tengo que estar haciendo algo mal, alguna idea > >>> >>>>> > >>> >>>>> -- > >>> >>>>> 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 > > > > -- > 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
