Criteria Projections Relacionamentos

0 respostas
fabianofrizzo

Bom Dia Pessoal to com uma duvida cruel aqui..

Tenho um Bean que tem alguns relacionamentos até aqui tudo ok..

O Problema é que em alguns momentos preciso carregar só um relacionameto e os outros não..
Alguém sabe como posso fazer isso..

Exemplo que tentei mas não funcionou

Criteria criteria = session.createCriteria(this.objClass)
        .setProjection(Projections.projectionList()
        		.add(Projections.property("pes.pesCod"),"pesCod")
        		.add(Projections.property("pes.pesNome"),"pesNome")
        		.add(Projections.property("pes.pesNomeReduzido"),"pesNomeReduzido")
        		.add(Projections.property("pes.pesFone"),"pesFone")
        		.add(Projections.property("pes.pesCel"),"pesCel")
        		.add(Projections.property("pes.pesFax"),"pesFax")
        		.add(Projections.property("pes.pesFornecedor"),"pesFornecedor")
        		.add(Projections.property("pes.pesCliente"),"pesCliente")
        		.add(Projections.property("pes.pesAtivo"),"pesAtivo")
        		.add(Projections.property("end.endCod"),"endCod")
        		.add(Projections.property("end.endDesc"),"endDesc")
        		.add(Projections.property("end.endNumero"),"endNumero")
        )
        .createCriteria("pes.endereco","end");


        criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
        criteria.setResultTransformer(new AliasToBeanResultTransformer(super.objClass));
        
        final List<Pessoa> result = criteria.list();

Assim diz que não é possivel achar o setEndCod e os outros pertencentes ao endereco...

E dessa outra forma

Criteria criteria = session.createCriteria(this.objClass)
        .setProjection(Projections.projectionList()
        		.add(Projections.property("pes.pesCod"),"pesCod")
        		.add(Projections.property("pes.pesNome"),"pesNome")
        		.add(Projections.property("pes.pesNomeReduzido"),"pesNomeReduzido")
        		.add(Projections.property("pes.pesFone"),"pesFone")
        		.add(Projections.property("pes.pesCel"),"pesCel")
        		.add(Projections.property("pes.pesFax"),"pesFax")
        		.add(Projections.property("pes.pesFornecedor"),"pesFornecedor")
        		.add(Projections.property("pes.pesCliente"),"pesCliente")
        		.add(Projections.property("pes.pesAtivo"),"pesAtivo")
        )
        .createCriteria("pes.endereco","end");
        .setProjection(Projections.projectionList()
        		.add(Projections.property("endCod"),"endCod")
        		.add(Projections.property("endDesc"),"endDesc")
        		.add(Projections.property("endNumero"),"endNumero")
        );

        criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
        criteria.setResultTransformer(new AliasToBeanResultTransformer(super.objClass));
        
        final List<Pessoa> result = criteria.list();

Aqui ele até funciona porém só me retorna os dados do endereço e os dados da pessoa não vem..

Alguém alguma forma para fazer isso.. Pode ser até usando HQL..

Muito Obrigado pela atenção de todos

Criado 17 de janeiro de 2009
Respostas 0
Participantes 1