Esta en la documentación: http://nhforge.org/doc/nh/en/index.html#persistent-classes-poco-sealed
<http://nhforge.org/doc/nh/en/index.html#persistent-classes-poco-sealed>Para que nhibernate puede hacer proxies de tus clases, (los proxies se usan para el mecanismo de lazyload), tus propiedades y metodos deben ser publicos y tu clases no deben ser sealed. Ademas la misma excepción lo dice. El 9 de junio de 2010 14:01, Eddie <[email protected]> escribió: > No he probado poner las propiedades como "virtual". > > Viendo ejemplos, no he visto que en ningun lado se utilice virtual. > Por eso queria saber si tal vez tenga algun otro tipo de problema de > configuración. > > > > On 9 jun, 12:52, José F. Romaniello <[email protected]> wrote: > > muy bien Edgar! > > > > El 9 de junio de 2010 12:50, Edgar Ramos <[email protected]> > escribió: > > > > > > > > > Has probado declarar como virtual tus propiedades, tal cual te lo > > > sugiere el mensaje de error ? > > > > > El día 9 de junio de 2010 07:03, Eddie <[email protected]> > escribió: > > > > Obtengo el siguiente error al iniciar la aplicación. > > > > > > " > > > > Error creating context 'spring.root': The following types may not be > > > > used as proxies: > > > > Domain.Medico: method get_Matricula should be 'public/protected > > > > virtual' or 'protected internal virtual' > > > > Domain.Medico: method set_Matricula should be 'public/protected > > > > virtual' or 'protected internal virtual' > > > > . > > > > . > > > > . > > > > " > > > > > > La situacion es la siguiente: tengo dos clases Persona y Medico. > > > > > > public class Persona : Entity > > > > { > > > > private string _nombre; > > > > private DateTime _fechaNacimiento; > > > > public string Nombre > > > > { > > > > get { return _nombre; } > > > > set { _nombre = value; } > > > > } > > > > public DateTime FechaNacimiento > > > > { > > > > get { return _fechaNacimiento; } > > > > set { _fechaNacimiento = value; } > > > > } > > > > } > > > > > > public class Medico : Persona > > > > { > > > > private string _matricula; > > > > public string Matricula > > > > { > > > > get { return _matricula; } > > > > set { _matricula = value; } > > > > } > > > > } > > > > > > El archivo de mapeo de NHibernate es el siguiente. > > > > > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> > > > > <class name="Domain.Persona, Domain" table="Personas" lazy="false" > > > > > <id name="ID" type="Int32" unsaved-value="0"> > > > > <column name="Id" sql-type="int" not-null="true" unique="true" > > > > index="PK_Personas"/> > > > > <generator class="native" /> > > > > </id> > > > > <property name="Nombre" type="String"> > > > > <column name="nombre" length="50" sql-type="varchar" not- > > > > null="true" /> > > > > </property> > > > > <property name="FechaNacimiento" type="DateTime"> > > > > <column name="fechanac" sql-type="datetime" /> > > > > </property> > > > > > > <joined-subclass name="Domain.Medico, Domain" > > > > table="Profesionales" > > > > > <key column="id_persona"/> > > > > <property name="Matricula" column="matricula" type="String" /> > > > > </joined-subclass> > > > > > > </class> > > > > </hibernate-mapping> > > > > > > Si elimino el tag <joined-subclass> todo anda bien y puedo manejar > > > > Persona normalmente. > > > > Como deberia agregar la definicion de la clase Medico?? > > > > > > Gracias > > > > > > -- > > > > 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
