Hola, No conozco la implementacion exacta de decorator para este caso, pero se me ocurre mas compleja, como dice Diego, ademas, la idea de Roles me suena mas natural. En mi opinon, la opcion de una jerarquia de clases para resolver tu problema es la mas incomoda.
Aquí encuentro dos threads sobre roles, finate que al final del primero cito un PDF de Fowler que te presenta un monton de opciones para resolverlo, cada uno con pros y contras http://groups.google.com.ar/group/NHibernate-Hispano/browse_thread/thread/9f 10ee6d4b73319a/8bda801296f53ee6?lnk=gst&q=dealing+with+roles#8bda801296f53ee 6 http://groups.google.com.ar/group/NHibernate-Hispano/browse_thread/thread/88 2b4d6bfeb331f4/b5f7ceb5df9943d5?lnk=gst&q=dealing+with+roles#b5f7ceb5df9943d 5 Otra buena referencia sobre el tema es Streamlined Object Modeling, de Nicola y otros. Si necesitas algun detalle de implementacion avisame. Carlos Peix -----Mensaje original----- De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Detonador de Sueños Enviado el: Sábado, 28 de Junio de 2008 04:01 p.m. Para: NHibernate-Hispano Asunto: [NHibernate-Hispano] Mapeo de Decorator Buenas tardes a todos. Les planteo mi problema: Actualmente tengo una clase Persona abstracta y luego otras clases Médico, Paciente, Clinica que heredan de Persona. Hasta ahí todo me funciona correctamente, pero me encotré con el problema de que un Paciente, puede ser un Médico y/o una Clínica y así todas las combinaciones posibles. Estuve leyendo por ahí que esto no se puede hacer con herencia y algunos proponían hacerlo con Decorator. Pero la verdad es que no se como arrancar. Les dejo mi mapeo actual (no está clínica, pero tiene otras propiedades distintas a Médicos y Pacientes), espero que me puedan ayudar para pasarlo a Decorator o me den alguna sugerencia. Desde ya muchas gracias Maza, Leonardo Javier El mapeo actual <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="SMSystem.MedLab.Models" namespace="SMSystem.MedLab.Models"> <class name="Persona" table="Personas" abstract="true" > <id name="Id" type="int"> <generator class="identity"/> </id> <property name="TipoDocumento" type="int" not-null="false"/> <property name="NumeroDocumento" type="int" not-null="false"/> <property name="ApellidoNombre" type="String" length="35" not- null="true"/> <many-to-one name="Direccion" class="Direccion" foreign- key="FK_Personas_Direcciones" fetch="join" not-null="false"/> <set name="Telefonos" table="PersonasTelefonos" lazy="false"> <key column="Persona" foreign-key="FK_PersonasTelefonos_Persona"/ > <one-to-many class="Telefono" not-found="ignore"/> </set> <set name="Emails" table="PersonasEmails" inverse="true" lazy="false"> <key column="Persona" foreign-key="PersonasEmails_Persona"/> <one-to-many class="Email" not-found="ignore"/> </set> <!--Mapeo de médicos--> <joined-subclass name="Medico" table="Medicos" extends="Persona"> <key column="Persona" foreign-key="FK_Medicos_Personas"/> <property name="Codigo" unique="true" not-null="true"/> <property name="FechaInicio" type ="DateTime" not-null="true"/> <property name="FechaFin" type ="DateTime" not-null="false"/> <set name="Zonas" table="MedicosZonas" lazy="false" fetch="join"> <key column="Medico" foreign-key="FK_MedicosZonas_Medico"/> <many-to-many class="Zona" column="Zona" fetch="join" foreign- key="FK_MedicosZonas_Zona"/> </set> </joined-subclass> <!--Mapeo de Pacientes--> <joined-subclass name="Paciente" table="Pacientes" extends="Persona"> <key column="Persona" foreign-key="FK_Pacientes_Personas"/> <property name="Codigo" unique="true" not-null="true"/> </joined-subclass> </class> </hibernate-mapping> --~--~---------~--~----~------------~-------~--~----~ Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano -~----------~----~----~----~------~----~------~--~---
