[RESOLVIDO] Criteria - Alias das tabelas na query gerada pelo Hibernate

1 resposta
L

Boa tarde,

Gostaria de saber como faço para forçar o Hibernate a gerar o alias das tabelas com o mesmo alias que defino quando estou criando o criteria.

O código é mais ou menos esse:

ProjectionList pl = Projections.projectionList();
		pl.add(Projections.groupProperty("set.dtBase"), "dtBase");
		pl.add(Projections.groupProperty("set.idSetor"), "idSetor");
		pl.add(Projections.groupProperty("set.dsSetor"), "dsSetor");
		pl.add(Projections.sqlProjection("SUM( oper.vl_principal * ( ISNULL( set.pc_garantia_base_100, 100 ) / 100.0 ) )", new String[]{"vlPrincipal"}, new Type[]{Hibernate.DOUBLE}));
		pl.add(Projections.sum("oper.vlProvisao"), "vlProvisao");
		
		Criteria criteria = sessao.createCriteria(OperacaoVO.class, "oper");
		criteria.setProjection(pl);
		criteria.createAlias("cliente", "cli", Criteria.LEFT_JOIN);
		criteria.createAlias("cli.setor", "set", Criteria.LEFT_JOIN);

A query gerada é essa:

select 
	set2_.dt_base as y0_, 
	set2_.id_setor as y1_, 
	set2_.ds_setor as y2_, 
	SUM( oper.vl_principal * ( ISNULL( set.pc_garantia_base_100, 100 ) / 100.0 ) ), 
	sum(this_.vl_provisao) as y4_ 
from 
	TB_OPERACAO this_ 
	left outer join TB_CLIENTE_HISTORICO cli1_ 
	on this_.id_cliente_historico=cli1_.id_cliente_historico 
	left outer join TB_SETOR_HISTORICO set2_ 
	on cli1_.id_setor_historico=set2_.id_setor_historico

Como pode se ver o alias oper virou this_ e cli virou cli1_. Eu não queria que o hibernate fizesse isso, gostaria que ela mantivesse o alias que eu coloquei.

Alguem pode me ajudar?

1 Resposta

L

Resolvi esse problema usando o código que está no link abaixo.

http://blog.bambo.it/2009/12/arithmetic-operations-using-generic.html

Obrigado.

Criado 15 de setembro de 2010
Ultima resposta 16 de set. de 2010
Respostas 1
Participantes 1