Ya que estamos...
En NHibernate se permite joined-subclass + discriminador? es decir, el joined-subclass es más correcto, y lo uso siempre q puedo, pero además siempre pongo un discriminador en la tabla/clase padre, para cuando consulto manualmente el modelo relacional, evitarme las megaconsultas que harían falta si no... Entiendo que sería más eficiente discriminar por este campo que por las complejísimas consultas con CASE y varios JOINs que hace nhibernate... Por otro lado, hay algún límite en los niveles de herencia? imagino que a priori no lo hay técnicamente, pero operativamente imagino que habrá un numero (1? 2? 3?) a partir del cual sea demasiado lento. El 5/01/07, SebaCabrera<[EMAIL PROTECTED]> escribió:
Fabio ósea no hace falta que el discriminador sea una clave primaria? Te pregunto porque los mapeos y las tablas las diseñe con el ObjectMapper 2005 y me pone tanto el EntidadId y el EntidadTipo(Discriminador) como claves primarias. -----Mensaje original----- De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Fabio Maulo Enviado el: Jueves, 04 de Enero de 2007 08:09 a.m. Para: [email protected] Asunto: [NHibernate-Hispano] Re: Herencia No necesitas la columna EntidadId_EntidadTipo porque le Id de Entidad NO es un Id compuesto. Pensalo un poco... pusiste un Id que identifica una y una sola fila de la tabla "Entidad"; para que necesitas otro campo? Chau. Fabio. SebaCabrera escribió: > > 2_ Mapeos > > Entidad > > ------- > > <?xml version="1.0" encoding="utf-8" ?> > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" schema="dbo"> > > <class name="EkoGroup.Herencia.NE.NE_Entidad, EkoGroup.Herencia.NE" > table="Entidad" discriminator-value="Entidad"> > > <id name="EntidadId" type="Int32" column="EntidadId"> > > <generator class="identity" /> > > </id> > > <discriminator column="EntidadTipo" type="String" /> > > <property name="Nombre" column="Nombre" type="String" /> > > <bag name="Emails" inverse="true" cascade="all"> > > <key> > > <column name="EntidadId_EntidadId" /> > > <column name="EntidadId_EntidadTipo" /> > > </key> > > <one-to-many class="EkoGroup.Herencia.NE.NE_Email, > EkoGroup.Herencia.NE" /> > > </bag> > > </class> > > </hibernate-mapping> > > Email > > ----- > > <?xml version="1.0" encoding="utf-8" ?> > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" schema="dbo"> > > <class name="EkoGroup.Herencia.NE.NE_Email, EkoGroup.Herencia.NE" > table="Email"> > > <id name="EmailId" type="Int32" column="EmailId"> > > <generator class="identity" /> > > </id> > > <property name="Email" column="Email" type="String" /> > > <many-to-one name="Entidad" class="EkoGroup.Herencia.NE.NE_Entidad, > EkoGroup.Herencia.NE"> > > <column name="EntidadId_EntidadId" /> > > <column name="EntidadId_EntidadTipo" /> > > </many-to-one> > > </class> > > </hibernate-mapping> > > 4_ Error > > + Linea de comando donde se produce el error: _FabricaSesion = > _Configuracion.BuildSessionFactory(); > > + Mensaje de Error: "Foreign key in table Email must have same number > of columns as referenced primary key in table Entidad". > > Quisiera saber como puedo solucionar esta problema ya que es probado > todo y no me anda. > -- No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.1.410 / Virus Database: 268.16.5/616 - Release Date: 04/01/2007 >
--~--~---------~--~----~------------~-------~--~----~ Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups-beta.google.com/group/NHibernate-Hispano -~----------~----~----~----~------~----~------~--~---
