Oi pessoal, estou tentando fazer uma hql e não vai me retornar não um objeto relacional em si, e sim uma query, até ai tudo bem estou conseguindo o problema é como tratar este retorno que recebo?
por exemplo:
como faço pra pegar o canal do segundo registro?
String hql = "select
di.diCanal as canal,
di.dtRegistroDi as dataRegistroDi,
di.cdMoedaDespesas as cdMoedaDespesas,
mf.codigo as codMoedaFrete,
mf.descricao as descMoedaFrete
from DeclaracaoImportacao as di
left join di.moedaFrete as mf";
Query query = session.createQuery(hql);
Use left join fetch para não fazer lazy loading no registro moedaFrete. Se o seu campo estiver como lazy loading, acredito que sua query seja a mesma que:
SELECT di FROM DeclaracaoImportacao di LEFT JOIN FETCH di.moedaFrete mf
se seu campo MoedaFrete estiver como eager, a query seguinte gera o mesmo resultado:
SELECT di FROM DeclaracaoImportacao di
lembrando que para retornar a lista é: query.getResultList();
[]'s
S
Sandro_Mueller
WRYEL:
Use left join fetch para não fazer lazy loading no registro moedaFrete. Se o seu campo estiver como lazy loading, acredito que sua query seja a mesma que:
SELECT di FROM DeclaracaoImportacao di LEFT JOIN FETCH di.moedaFrete mf
se seu campo MoedaFrete estiver como eager, a query seguinte gera o mesmo resultado:
SELECT di FROM DeclaracaoImportacao di
lembrando que para retornar a lista é: query.getResultList();
[]'s
Ok, mas se fizer desta forma terei uma lista de objetos di, e o que eu quero é uma lista que contenha os campos declarados no select em casa linha, parecido como no JDBC, tenho certeza que tem algo assim, vi uma vez mas não acho mais…
S
Sandro_Mueller
WRYEL:
Use left join fetch para não fazer lazy loading no registro moedaFrete. Se o seu campo estiver como lazy loading, acredito que sua query seja a mesma que:
SELECT di FROM DeclaracaoImportacao di LEFT JOIN FETCH di.moedaFrete mf
se seu campo MoedaFrete estiver como eager, a query seguinte gera o mesmo resultado:
SELECT di FROM DeclaracaoImportacao di
lembrando que para retornar a lista é: query.getResultList();
[]'s
Ok, mas se fizer desta forma terei uma lista de objetos di, e o que eu quero é uma lista que contenha os campos declarados no select em casa linha, parecido como no JDBC, tenho certeza que tem algo assim, vi uma vez mas não acho mais…
Esta parte eu já conhecia, é que estou Fazendo um ETL e preciso que ele seja totalmente abstrato(o pelo menos quase ), ai não posso trabalhar com a classe da entidade no código, entendeu, ?
Criei um Classe Entidade(Segue abaixo) que trata a query recebida, poderia criar métodos do tipo eof, next, getRecord, mas da maneira que esta já esta me suprindo…
hm, que parte do ETL tu ta fazendo em Java? o team que trabalho nos fizemos um ETL, inicialmente queriamos fazer tudo em Java, mas n foi boa escolha. E tivemos que mudar arquitetura, dai fizemos usando PL/SQL que pareceu ser uma boa opcao.
S
Sandro_Mueller
Pretendo fazer tudo em Java, a parte que estou fazendo agora(estou acabando) é o mapeamento(via xml), e a criação da matriz de dados… esta parte, estou fazendo em um jar separado porque durante este desenvolvimento me venho vários casos de uso a mente…