Hola a todos.
Quisiera saber si alguien me puede orientar en como realizar un
mapping con las siguientes caracterìsticas.
Definì una clase TELEFONOS que posee una propiedad "Titular" que es
de  "tipo" ITitularTelefono, esta interfaz es implementada por
diferntes clases como Personas, Domicilios, o Empresas que pueden ser
titulares de un telefono . O sea

public interface ITitularTelefono
    {
        TipoTitularTelefono TipoTitular { get; }
        int ID { get; }
    }

 public enum TipoTitularTelefono // clases que implementan la interfaz
ITitularTelefono
    {
        Persona,
        Domicilio,
        Empresa
    }

class Telefono
 {
         int _numero;
         ITitularTelefono _titular;
         .....
}

class Persona ( o Domicilio, o Empresa)
{
        private IList<Telefono> _telefonos;
        public IList<Telefono> Telefonos
        {
            get { return _telefonos; }
            set { _telefonos = value; }
        }

        public TipoTitularTelefono TipoTitular
        {
            get { return  TipoTitularTelefono.Persona; }
        }
    }

He intentado mapearlo solamente con una tabla Telefonos y una tabla
por cada entidad que implementa la interfaz (Personas, Domicilios,
etc) y para no recurrir a tablas many to many agregue en la tabla de
telefonos dos campos uno con el id del titular y otro con su tipo y
los mapee de la siguiente forma:
Dentro del hbm de telefonos lo siguiente:

  <any  name="_titularTelefono" access ="field" id-type="int" meta-
type ="String" >
      <meta-value value="Domicilio" class="Domicilio, Domain"/>
      <meta-value value="Persona" class="Persona, Domain"/>
      <column name="TipoTitular"/>
      <column name="IdTitular"/>
    </any>

y dentro de los hbm de las entidades

<class name="Domicilio,Domain"
         table="Domicilios" lazy="false">
...
<bag generic="true"  name="_telefonos" table="vwTelefonosDomicilios"
       cascade="all" access="field" inverse="true" >
      <key column="IdTitular" />
      <one-to-many class ="Telefono,Domain"/>
    </bag>
</class>
donde vwTelefonosDomicilios es una vista filtrada por la constante de
Domicilios

El problema es que si bien graba la tabla de telefonos no logro
recuperar correctamente el listado de los telefonos por entidad.
Tambien he intentado hacerlo con un "composite" en telefonos en vez de
any pero no logro que funcione y tambien he leído de los misterios que
encierra el comando <any> y <many-to-any>. 
http://www.ayende.com/Blog/archive/2005/10/07/8232.aspx

Disculpen la extensión del mail, y gracias de antemano.
Saludos, Claudio.


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