These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: Composite-id with list
PostPosted: Tue Mar 13, 2007 5:08 pm 
Newbie

Joined: Tue Mar 13, 2007 5:02 pm
Posts: 1
Need help with Hibernate? Read this first:
http://www.hibernate.org/ForumMailingli ... AskForHelp

Hibernate version: 1.0.2

Mapping documents: 1.0.0.0

I have a composite-id in a class RateioGrupoCustoCentroCusto with foreignkeys empresa, grupoCusto and centroCusto.

Insert, update is ok.

But when I need list objects by empresa and grupoCusto the method return a list with the objects (RateioGrupoCustoCentroCusto), but when I convert list.current to RateioGrupocustoCentroCusto the centroCusto is null. Just centroCusto is null, the other relational objects is populated.

View code of class RateioGrupoCustoCentroCusto below:

Code:

[Serializable]
    [Class(Table = "rateiogrupocustocentrocusto", Lazy = false)]
    public class RateioGrupoCustoCentroCusto : Entidade
    {
        private double _valorPrevisao;
        private RateioGrupoCustoCentroCustoPK _pk;
        private PessoaJuridica _empresa;
        private CentroCusto _centroCusto;
        private GrupoCusto _grupoCusto;

        ///<sumary>representa a chave composta pela empresa, grupo de custo e centro de custo</sumary>
        [CompositeId(-2, Name = "PK", Class = "RateioGrupoCustoCentroCustoPK", ClassType = typeof(RateioGrupoCustoCentroCustoPK))]
        [KeyManyToOne(-1, Column = "RGCCC_EMP_ID", ClassType = typeof(PessoaJuridica), Name = "empresa")]
        [KeyManyToOne(0, Column = "RGCCC_CC_ID", ClassType = typeof(CentroCusto), Name = "centroCusto")]
        [KeyManyToOne(1, Column = "RGCCC_GC_ID", ClassType = typeof(GrupoCusto), Name = "grupoCusto")]
        [Index(2, Column = "RGCCC_EMP_ID", TypeType = typeof(PessoaJuridica))]
        [Index(3, Column = "RGCCC_GC_ID", TypeType = typeof(GrupoCusto))]
        public RateioGrupoCustoCentroCustoPK PK
        {
            get {
                if (_pk==null)
                    _pk = new RateioGrupoCustoCentroCustoPK();
                return _pk;
            }
            set
            {
                if (_pk == null)
                    _pk = new RateioGrupoCustoCentroCustoPK();
                _pk = value;
            }
        }

        [ManyToOne(0, Cascade = CascadeStyle.None, Column = "RGCCC_GC_ID", ClassType = typeof(GrupoCusto), Name = "grupoCusto", Fetch = FetchMode.Join, Insert = false, Update = false)]
        public GrupoCusto grupoCusto
        {
            get { return _grupoCusto; }
            set { _grupoCusto = value; }
        }

        [ManyToOne(0, Cascade = CascadeStyle.None, Column = "RGCCC_CC_ID", ClassType = typeof(CentroCusto), Name = "centroCusto", Fetch = FetchMode.Join, Insert = false, Update = false)]
        public CentroCusto centroCusto
        {
            get { return _centroCusto; }
            set { _centroCusto = value; }
        }

        [ManyToOne(0, Cascade = CascadeStyle.None, Column = "RGCCC_EMP_ID", ClassType = typeof(PessoaJuridica), Name = "empresa", Fetch = FetchMode.Join, Insert = false, Update = false)]
        public PessoaJuridica empresa
        {
            get { return _empresa; }
            set { _empresa = value; }
        }


        ///<sumary>Indica o OID para o mapeamento O.O Relacional</sumary>
        public override object Key
        {
            get { return _pk; }
            set { _pk = (RateioGrupoCustoCentroCustoPK)value; }
        }

        /// <summary>
        /// Representa o valor do rateio para o centro de custo
        /// </summary>
        [Property(0, Column = "RGCCC_VALORPREVISAO", Name = "valorPrevisao", TypeType = typeof(double))]
        public double valorPrevisao
        {
            get { return _valorPrevisao; }
            set { _valorPrevisao = value; }
        }
    }



Code of class PK RateioGrupoCustoCentroCustoPK

Code:
[Serializable]
    public class RateioGrupoCustoCentroCustoPK
    {

        private GrupoCusto _grupoCusto;
        private CentroCusto _centroCusto;
        private PessoaJuridica _empresa;

        public RateioGrupoCustoCentroCustoPK() { }

        /// <summary>
        /// Este méto é necessário para uso da chave composta pelo NHibernate
        /// </summary>
        /// <param name="obj">é uma Entidade: rateioGrupoCustoCentroCustoPK</param>
        /// <returns>verdadeiro ou falso</returns>
        public override bool Equals(object obj)
        {
            RateioGrupoCustoCentroCustoPK rateio = obj as RateioGrupoCustoCentroCustoPK;
            if (rateio == null) return false;

            if (!grupoCusto.Equals(rateio.grupoCusto)) return false;

            if (!empresa.Equals(rateio.empresa)) return false;

            if (!centroCusto.Equals(rateio.centroCusto)) return false;

            return true;
        }
        /// <summary>
        /// serve para retornar o HaschCode da classe
        /// </summary>
        /// <returns>inteiro</returns>
        public override int GetHashCode()
        {
            unchecked
            {
                int result;
                result = empresa.Id.GetHashCode();
                result += grupoCusto.id.GetHashCode();
                result += centroCusto.id.GetHashCode();
                return result;
            }
        }

        /// <summary>
        /// Representa a empresa do centro de custo e do grupo de custo
        /// </summary>
        public PessoaJuridica empresa
        {
            get {
                //if (_empresa == null)
                //    _empresa = new PessoaJuridica();
                return _empresa;
            }
            set { _empresa = value; }
        }

        /// <summary>
        /// Representa um centro de custo do rateio
        /// </summary>
        public CentroCusto centroCusto
        {
            get {
                //if (_centroCusto == null)
                //    _centroCusto = new CentroCusto();
                return _centroCusto;
            }
            set { _centroCusto = value; }
        }
        /// <summary>
        /// Representa o grupo de custo que teve o valor da previsão rateado entre os centros de custo
        /// </summary>
        public GrupoCusto grupoCusto
        {
            get {
                //if (_grupoCusto == null)
                //    _grupoCusto = new GrupoCusto();
                return _grupoCusto;
            }
            set { _grupoCusto = value; }
        }
    }


Code of business class with list method

Code:
public class NRateioGrupoCustoCentroCusto : NGeneric
    {
        public override void validar(FWBase.entidade.Entidade entidade)
        {
            IDictionary msgs = new Hashtable();

            if (((RateioGrupoCustoCentroCusto)entidade).PK.grupoCusto == null)
            {
                msgs.Add("GrupoCusto", "Crupo de Custo não informado.");
            }

            if (((RateioGrupoCustoCentroCusto)entidade).PK.centroCusto == null)
            {
                msgs.Add("CentroCusto", "Centro de Custo não informado.");
            }

            if (((RateioGrupoCustoCentroCusto)entidade).valorPrevisao == 0)
            {
                msgs.Add("ValorPrevisao", "O valor da previsão não pode ser igual a zero.");
            }

            if (((RateioGrupoCustoCentroCusto)entidade).PK.empresa == null)
            {
                msgs.Add("Empresa", "Empresa não informada.");
            }

            if (msgs.Count != 0)
            {
                throw new ValidacaoException(msgs);
            }
        }

        public override FWBase.entidade.Entidade criar()
        {
            return new RateioGrupoCustoCentroCusto();
        }

        public override FWBase.entidade.Entidade criar(int id)
        {
            return null;
           
        }

        public IList listar(PessoaJuridica empresa)
        {
            ParametroOrdenacao[] ordenacao = new ParametroOrdenacao[1];
            ParametroPesquisa[] parametros = new ParametroPesquisa[1];
            parametros[0] = ParametroPesquisa.igual("PK.empresa", empresa);

            return Persistencia.listar(typeof(RateioGrupoCustoCentroCusto), parametros, ordenacao);
        }

        public IList listar()
        {
            ParametroOrdenacao[] ordenacao = new ParametroOrdenacao[1];
            ParametroPesquisa[] parametros = new ParametroPesquisa[1];
           
            return Persistencia.listar(typeof(RateioGrupoCustoCentroCusto), parametros, ordenacao);
        }

        public IList listar(PessoaJuridica empresa, GrupoCusto grupoCusto)
        {
            ParametroOrdenacao[] ordenacao = new ParametroOrdenacao[2];
            ordenacao[0] = ParametroOrdenacao.asc("empresa");
            ordenacao[1] = ParametroOrdenacao.asc("grupoCusto");
            ParametroPesquisa[] parametros = new ParametroPesquisa[2];
            parametros[0] = ParametroPesquisa.igual("empresa", empresa);
            if (grupoCusto!=null) parametros[1] = ParametroPesquisa.igual("grupoCusto", grupoCusto);
            return Persistencia.listar(typeof(RateioGrupoCustoCentroCusto), parametros, ordenacao);
        }

        public bool existeRateio(PessoaJuridica empresa, GrupoCusto grupoCusto, CentroCusto centroCusto)
        {
            ParametroOrdenacao[] ordenacao = new ParametroOrdenacao[2];
            ordenacao[0] = ParametroOrdenacao.asc("empresa");
            ordenacao[1] = ParametroOrdenacao.asc("grupoCusto");
            ParametroPesquisa[] parametros = new ParametroPesquisa[3];
            parametros[0] = ParametroPesquisa.igual("empresa", empresa);
            if (grupoCusto != null) parametros[1] = ParametroPesquisa.igual("grupoCusto", grupoCusto);
            if (centroCusto != null) parametros[2] = ParametroPesquisa.igual("centroCusto", centroCusto);
            IList lista = Persistencia.listar(typeof(RateioGrupoCustoCentroCusto), parametros, ordenacao);
            bool bRetorno = false;
           
            if (lista.Count == 0)
                bRetorno = false;
            else
                bRetorno = true;

            return bRetorno;   
        }

        public IList listar(RateioGrupoCustoCentroCustoPK pk)
        {
            ParametroOrdenacao[] ordenacao = new ParametroOrdenacao[2];
            ordenacao[0] = ParametroOrdenacao.asc("empresa");
            ordenacao[1] = ParametroOrdenacao.asc("grupoCusto");

            ParametroPesquisa[] parametros = new ParametroPesquisa[1];
            parametros[0] = ParametroPesquisa.igual("PK", pk);

            return Persistencia.listar(typeof(RateioGrupoCustoCentroCusto), parametros, ordenacao);
        }

        public void alterar(IList listaRateio)
        {
            try
            {
                IEnumerator ieLista = listaRateio.GetEnumerator();
                RateioGrupoCustoCentroCusto rateio =(RateioGrupoCustoCentroCusto) this.criar();
                Persistencia.iniciarTransacao();
                while (ieLista.MoveNext())
                {
                    rateio.PK.centroCusto = ((RateioGrupoCustoCentroCusto)ieLista.Current).PK.centroCusto;
                    rateio.PK.grupoCusto = ((RateioGrupoCustoCentroCusto)ieLista.Current).PK.grupoCusto;
                    rateio.PK.empresa = ((RateioGrupoCustoCentroCusto)ieLista.Current).PK.empresa;

                    try
                    {
                        Persistencia.consultar(rateio);
                        Persistencia.removerObjetoSessao(rateio);
                        Persistencia.atualizar((RateioGrupoCustoCentroCusto)ieLista.Current);
                    }
                    catch (Exception ex)
                    {
                        Persistencia.incluir((RateioGrupoCustoCentroCusto)ieLista.Current);
                    }
                }
                Persistencia.comitarTransacao();
            }
            catch (Exception ex)
            {
                Persistencia.cancelarTransacao();
                throw new Exception(Constantes.MSG_ERRO, ex);
            }
        }
    }


I´m using method "public IList listar(PessoaJuridica empresa, GrupoCusto grupoCusto)"


Please, any sugestion?

Thank you.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.