Y el atributo name es obligatorio, justamente la pregunta es como tendria que definir el archivo de mapeo para ese caso. Ya que no me interesa navegar de autorizaciones a factura.
Estoy trabajando con una BD de PostGresSQL 8.1 es lo que me falto aclarar en el mail anterior. Gracias por las respuestas.. :) 2010/2/24 Fabio Maulo <[email protected]> > y la necesitas en el mapping ? > > 2010/2/24 Sebastian Iglesias (Gmail) <[email protected]> > >> Si justamente no quiero una asociacion bidireccional, por eso es que no >> tengo la propiedad Autoriza :) >> >> >> >> El 24 de febrero de 2010 12:14, Roberto Ramírez >> <[email protected]>escribió: >> >> En tu hbm.xml para CFacturaAutoriza tienes una propiedad que no existe en >>> la clase. >>> -- >>> Roberto Ramírez >>> >>> On Tue, Feb 23, 2010 at 12:06 PM, Sebastian <[email protected]> wrote: >>> >>>> Hola grupo >>>> >>>> Buneo este es mi primero mensaje, el problema que tengo es en el mapeo >>>> de una factura a sus autorizaciones. La relacion es que tengo una >>>> factura con un detalle de aurorizaciones, es una relacion >>>> unidireccional de una factura hacia muchas autoirizaciones. >>>> >>>> El error que me da al pedir la coneccion es el siguiente: >>>> >>>> "Could not find a getter for property 'Autoriza' in class >>>> 'PruebaCRUD_NH_IDCompuesto.CFacturaAutoriza" >>>> >>>> Mi solucion de prueba tiene las siguentes clases. >>>> >>>> public class CFacturaAutoriza >>>> { >>>> private int? _oldHashCode; >>>> public override bool Equals(object obj) >>>> { >>>> CFacturaAutoriza other = obj as CFacturaAutoriza; >>>> if (other == null) >>>> return false; >>>> >>>> // handle the case of comparing two NEW objects >>>> bool otherIsTransient = Equals(other.Numero, -1); >>>> bool thisIsTransient = Equals(Numero, -1); >>>> >>>> if (otherIsTransient && thisIsTransient) >>>> return ReferenceEquals(other, this); >>>> return other.Numero.Equals(this.Numero) && >>>> other.Fecha.Equals(this.Fecha) && other.Tipodoc.Equals(this.Tipodoc) >>>> && other.Posicion.Equals(this.Posicion); >>>> } >>>> >>>> public override int GetHashCode() >>>> { >>>> // Once we have a hash code we'll never change it >>>> if (_oldHashCode.HasValue) >>>> return _oldHashCode.Value; >>>> >>>> bool thisIsTransient = Equals(Numero, -1); >>>> // When this instance is transient, we use the base >>>> GetHashCode() >>>> // and remember it, so an instance can NEVER change its >>>> hash code. >>>> if (thisIsTransient) >>>> { >>>> _oldHashCode = base.GetHashCode(); >>>> return _oldHashCode.Value; >>>> } >>>> return this.Numero.GetHashCode() + >>>> this.Fecha.GetHashCode() + Tipodoc.GetHashCode() + >>>> this.Posicion.GetHashCode(); >>>> } >>>> >>>> public virtual DateTime Fecha { get; set; } >>>> public virtual string Tipodoc { get; set; } >>>> public virtual int Numero { get; set; } >>>> public virtual int Posicion { get; set; } >>>> public virtual string Descripcion { get; set; } >>>> public virtual string Usuario { get; set; } >>>> } >>>> >>>> public class CFacturaCabezal >>>> { >>>> >>>> private int? _oldHashCode; >>>> public override bool Equals(object obj) >>>> { >>>> CFacturaCabezal other = obj as CFacturaCabezal; >>>> if (other == null) >>>> return false; >>>> >>>> // handle the case of comparing two NEW objects >>>> bool otherIsTransient = Equals(other.Numero, -1); >>>> bool thisIsTransient = Equals(Numero, -1); >>>> >>>> if (otherIsTransient && thisIsTransient) >>>> return ReferenceEquals(other, this); >>>> return other.Fecha.Equals(this.Fecha) && >>>> other.Tipodoc.Equals(this.Tipodoc) && >>>> other.Numero.Equals(this.Numero); >>>> } >>>> >>>> public override int GetHashCode() >>>> { >>>> // Once we have a hash code we'll never change it >>>> if (_oldHashCode.HasValue) >>>> return _oldHashCode.Value; >>>> >>>> bool thisIsTransient = Equals(Numero, -1); >>>> // When this instance is transient, we use the base >>>> GetHashCode() >>>> // and remember it, so an instance can NEVER change its >>>> hash code. >>>> if (thisIsTransient) >>>> { >>>> _oldHashCode = base.GetHashCode(); >>>> return _oldHashCode.Value; >>>> } >>>> return this.Fecha.GetHashCode() + >>>> this.Tipodoc.GetHashCode() + this.Numero.GetHashCode(); >>>> } >>>> >>>> // public int Id { get; set; } >>>> //public virtual int id { get; set; } >>>> public virtual DateTime Fecha { get;set; } >>>> string _tipodoc; >>>> public virtual string Tipodoc >>>> { >>>> get { return this._tipodoc.Trim(); } >>>> set { this._tipodoc = value; } >>>> } >>>> public virtual int Numero { get; set; } >>>> public virtual DateTime Fechaasto { get; set; } >>>> public virtual string Lote { get; set; } >>>> public virtual int Asiento { get; set; } >>>> public virtual IList<CFacturaAutoriza> Autoriza { get; set; } >>>> } >>>> >>>> Y los archivos de mapeo son los siguientes. >>>> >>>> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" >>>> assembly="PruebaCRUD-NH-IDCompuesto" >>>> namespace="PruebaCRUD_NH_IDCompuesto"> >>>> <class name="CFacturaAutoriza" table="facturas_autoriza"> >>>> <composite-id> >>>> <key-property name="Fecha" column="fecha" type="date" /> >>>> <key-property name="Tipodoc" column="tipodoc" type="String" >>>> length="6" /> >>>> <key-property name="Numero" column="numero" type="int" /> >>>> <key-property name="Posicion" column="posicion" type="int" /> >>>> </composite-id> >>>> >>>> <many-to-one >>>> name="Autoriza" >>>> class="CFacturaAutoriza" >>>> insert="false" >>>> update="false" >>>> not-null="true" cascade="all"> >>>> >>>> <column name="Fecha" /> >>>> <column name="Tipodoc" /> >>>> <column name="Numero" /> >>>> <column name="Posicion" unique="true"/> >>>> </many-to-one> >>>> >>>> <property name="Posicion" column="posicion" type="int" /> >>>> <property name="Descripcion" type="string" column="descripcion" /> >>>> <property name="Usuario" type="string" column="usuario"/> >>>> </class> >>>> </hibernate-mapping> >>>> >>>> >>>> /// Y el mapping de la clase FacturaAutoriza >>>> >>>> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" >>>> assembly="PruebaCRUD-NH-IDCompuesto" >>>> namespace="PruebaCRUD_NH_IDCompuesto"> >>>> <class name="CFacturaCabezal" table="facturas_cabezal" > >>>> <synchronize table="facturas_cabezal"/> >>>> <synchronize table="facturas_autoriza"/> >>>> >>>> <composite-id > >>>> <key-property name="Fecha" column="fecha" type="date" /> >>>> <key-property name="Tipodoc" column="tipodoc" type="String" >>>> length="6" /> >>>> <key-property name="Numero" column="numero" type="int" /> >>>> </composite-id> >>>> >>>> <bag name="Autoriza" >>>> table="facturas_autoriza" >>>> inverse="true" >>>> cascade="all" >>>> lazy="true" >>>> fetch="subselect" generic="true" > >>>> <key> >>>> <column name="Fecha" /> >>>> <column name="Tipodoc"/> >>>> <column name="Numero" /> >>>> </key> >>>> <one-to-many class="CFacturaAutoriza" /> >>>> </bag> >>>> >>>> <property name="Fechaasto" type="date" column="fechaasto" /> >>>> <property name="Lote" type="string" column="lote" length="6" /> >>>> <property name="Asiento" type="int" column="asiento" length="10" / >>>> > >>>> </class> >>>> </hibernate-mapping> >>>> >>>> >>>> Bueno desde ya muchas gracias... >>>> Sebastian. >>>> >>>> -- >>>> 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 >>> >> >> >> >> -- >> Saludos.. >> >> Sebastián Iglesias >> Montevideo - Uruguay >> Blog: http://isebitas.blogspot.com/ >> >> -- >> Para escribir al Grupo, hágalo a esta dirección: >> [email protected] >> Para más, visite: http://groups.google.com/group/NHibernate-Hispano >> > > > > -- > Fabio Maulo > > -- > Para escribir al Grupo, hágalo a esta dirección: > [email protected] > Para más, visite: http://groups.google.com/group/NHibernate-Hispano > -- Saludos.. Sebastián Iglesias Montevideo - Uruguay Blog: http://isebitas.blogspot.com/ -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano
