Como faço esse outer join no hql?

4 respostas
jason_bourne

Pessoal,

Como posso fazer esse outer join no hql? já tentei de todas as formas.

select * from crp_item item left outer join crp_int.TMP_CONTROLE_ITEM_FISCAL tmp 
       on item.cod_item = tmp.cod_item
       where 
       item.cod_tipo_item = 4
       and item.cod_item in ('2000030')

4 Respostas

analyser

Fácil, primeiro resultado -[google] outer join hql[/google]

C

Tá ai a construção de um outer join no HQL

select um.*, dois.* from tabelaUm um left outer join tabelaDois dois where um.coluna = dois.coluna and um.outraColuna = 4 and um.outraColunaAinda in ('2000030')
jason_bourne

clone_zealot:
Tá ai a construção de um outer join no HQL

select um.*, dois.* from tabelaUm um left outer join tabelaDois dois where um.coluna = dois.coluna and um.outraColuna = 4 and um.outraColunaAinda in ('2000030')

Fazendo isso eu tenho esse erro:

E

Ah Junçao eh feita entre objetos e nao entre as classes, ou seja, nao segue a mesma sintaxe da sql que junta tabelas.
Normalmente não eh preciso fazer junções na HQL, pois através dos relacionamentos o hibernate jah faz a junção para vc, ou vc tenha que rever o seu mapeamento ou entao o incio da consulta estah partindo do lugar errado.

mapeamento:

public classe TabelaA{
   private Integer id;//+ métodos encapsuladores
   private String descricao; //+ métodos encapsuladores    
}

public classe TabelaB{
    private TabelaA tabelaA; //+ métodos encapsuladores
    
}

hql:

SELECT t  FROM tabelaB t WHERE t.tabelaA.id = 10

Mas caso queira realmente fazer a junção…

SELECT t FROM tabelaB t
LEFT OUTER JOIN  t.tabelaA AS tA
WHERE tA.id IN('2000030');
Criado 13 de julho de 2009
Ultima resposta 14 de jul. de 2009
Respostas 4
Participantes 4