Boa tarde.
Estou com um problema, já tentei solucionar de diversas formas, mas o que ocorre é muito estranho. Se for erro meu, quero pelo menos saber onde estou errando.
Tenho um HQL para uma busca bem filtrada de dados:
select
sum(rateio.valor),
sum(lancamento.valor),
min(rateio.centroCustoHibernate),
min(lancamento.contaAnaliticaHibernate),
lancamento.tipo
from
Lancamento as lancamento
left join
lancamento.rateiosHibernate as rateio
where
lancamento.grupoLancamentoHibernate.pessoaHibernate.id = 53
and lancamento.grupoLancamentoHibernate.data between '2006-01-01'
and '2006-12-31'
and lancamento.contaAnaliticaHibernate.tipoConta = 0
group by
rateio.centroCustoHibernate,
lancamento.contaAnaliticaHibernate,
lancamento.tipo
order by
lancamento.contaAnaliticaHibernate,
rateio.centroCustoHibernate,
lancamento.tipo
Executando ele pelo Hibernante Tools no Eclipse, tenho o retorno de diversos registros (mais de 500). Mas quando executo ele na minha Session, no sistema, o retorno é um List vazio.
Inicialmente imagina que pudesse ser algum tipo de configuração da minha SessionFactory, já que tenho uma do sistema e uma separada para o Hibernate Tools, mas não há diferença alguma.
Com isso resulvi testar o SQL que o Hibernate gera, e me deparei com difereças no sql, gerado pelo Hibernate Tools (funciona) e o gerado pela minha Session “in runtime” (retorna vazio).
SQL do Hibernate Tools:
select
sum(rateioshib1_.RLA_VLR) as col_0_0_,
sum(lancamento0_.LAN_VAL) as col_1_0_,
min(rateioshib1_.RLA_CCU) as col_2_0_,
min(lancamento0_.LAN_PLA) as col_3_0_,
lancamento0_.LAN_TIP as col_4_0_
from
LANCAM lancamento0_
left outer join
RATLAN rateioshib1_
on lancamento0_.LAN_IDX=rateioshib1_.RLA_LAN,
GRULAN grupolanca2_,
PLACON contaanali4_
where
lancamento0_.LAN_PLA=contaanali4_.PLA_IDX
and lancamento0_.LAN_GLA=grupolanca2_.GLA_IDX
and grupolanca2_.GLA_PES=53
and (
grupolanca2_.GLA_DAT between '2006-01-01' and '2006-12-31') and contaanali4_.PLA_TIP=0 group by rateioshib1_.RLA_CCU , lancamento0_.LAN_PLA , lancamento0_.LAN_TIP order by lancamento0_.LAN_PLA, rateioshib1_.RLA_CCU, lancamento0_.LAN_TIP
SQL da Session ‘in runtime’:
select
sum(rateioshib1_.RLA_VLR) as col_0_0_,
sum(lancamento0_.LAN_VAL) as col_1_0_,
min(rateioshib1_.RLA_CCU) as col_2_0_,
min(lancamento0_.LAN_PLA) as col_3_0_,
lancamento0_.LAN_TIP as col_4_0_
from
LANCAM lancamento0_
left outer join
RATLAN rateioshib1_
on lancamento0_.LAN_IDX=rateioshib1_.RLA_LAN,
CCUSTO centrocust2_,
PLACON contaanali3_,
GRULAN grupolanca4_
where
rateioshib1_.RLA_CCU=centrocust2_.CCU_IDX
and lancamento0_.LAN_PLA=contaanali3_.PLA_IDX
and lancamento0_.LAN_GLA=grupolanca4_.GLA_IDX
and grupolanca4_.GLA_PES=53
and (
grupolanca4_.GLA_DAT between '2006-01-01' and '2006-12-31') and contaanali3_.PLA_TIP=0 group by rateioshib1_.RLA_CCU , lancamento0_.LAN_PLA , lancamento0_.LAN_TIP order by lancamento0_.LAN_PLA, rateioshib1_.RLA_CCU, lancamento0_.LAN_TIP
Vejam que o SQL na Session a tradução do HQL, gerou um left outer join com a tabela CCUSTO, o que não ocorre con SQL gerado pelo Hibernate Tools.
Alguém sabe a origem dessa divergência? Configuração do Hibernate? Não sei mais o que pensar, minhas alternativas já se esgotaram, qualquer idéia nova é bem vinda.
Muito obrigado.