si mirá tu clases y tu mappings tenes la respuesta.

2010/2/23 Sebastian <[email protected]>

> 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




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

Responder a