Problemas com Left outer join no Hibernate

4 respostas
V

Olá galera estou com problemas com left outer join no hibernate

o erro é:

Mensagem do sistema: outer or full join must be followed by path expression [select a, b.valorProvisionamentoFavorecido, f.descricaoFavorecido from com.mestrainfo.sysprevweb.financeiro.vo.ProvisoesVO a join ProvisoesDetVO b as a.id = b.id where 1=1 join FavorecidosDevedores f as b.identificadorFavorecidoDevedor= f.id where 1=1 where a.dataProvisionamento = '2007-04-18']

Query:

select a, b.valorProvisionamentoFavorecido, f.descricaoFavorecido

from ProvisoesVO  a

left outer  join  ProvisoesDetVO b as a.id = b.id where 1=1

left outer join FavorecidosDevedores f  as  b.identificadorFavorecidoDevedor= f.id where 1=1

where a.dataProvisionamento = '2007-04-18'

Att

4 Respostas

C

Faz mto tempo q trabalho com hibernate, e raramente mesmooooooo usei o left join ou coisa do tipo…
amigo pense cmigo…

digamos q tu tem um objeto que esta encapsulado em…
pessoa.camiseta
tu tem a tabela pessoa e a camiseta certo ?
mas. ao invez de usar left join para pegar digamos q a cor da sua camiseta… tu pode usar assimm

Pessoa.camiseta.cor = :seuAtributo.

e o hibernate ja vai t retornar, tente fazer isso.

V

nao entendi

C

“Cassolato”:
Faz mto tempo q trabalho com hibernate, e raramente mesmooooooo usei o left join ou coisa do tipo…
amigo pense cmigo…

digamos q tu tem um objeto que esta encapsulado em…
pessoa.camiseta
tu tem a tabela pessoa e a camiseta certo ?
mas. ao invez de usar left join para pegar digamos q a cor da sua camiseta… tu pode usar assimm

Pessoa.camiseta.cor = :seuAtributo.

e o hibernate ja vai t retornar, tente fazer isso.

Sobre raramente usar left join eu discordo. Eu uso direto, e não tem outro jeito de solucionar.

Ex.: Pegar todas pessoas que tem camiseta preta ou carro vermelho (vai ter que fazer com left ou usar 2 sqls).
- Pegar todas pessoas com mais de 25 anos e seus carros se tiverem. (Dali left)


Repondendo a pergunta do “Vijava”

Vc pode montar assim.

select pro
       , pdes
       , fdes
 from ProvisoesVO  pro
   left join pro.provisoesDetVOs pdes 
   left join pdes.favorecidosDevedores fdes 
where pro.dataProvisionamento = '2007-04-18'

PS.: O codigo acima só funcionara se tiver mapeado o relacionamento entre as tabelas conforme os join.[/code]

C

“Celino”:

Ex.: Pegar todas pessoas que tem camiseta preta ou carro vermelho (vai ter que fazer com left ou usar 2 sqls).
- Pegar todas pessoas com mais de 25 anos e seus carros se tiverem. (Dali left)

Sobre as camizetas… pq n usar… pessoa.camiseta = :vermelho ?
sobre a idade… tu tambem consegue pegar tranquilamente… o hibernate por si ja une as tabelas no seus relacionamentos… e so tu olhar o sql ele gera qdo tu fazer um hql ou algo do tipo :joia:

Criado 9 de julho de 2007
Ultima resposta 9 de jul. de 2007
Respostas 4
Participantes 3