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
-~----------~----~----~----~------~----~------~--~---

Responder a