Problemas com Left outer join no Hibernate

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

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.

nao entendi

[quote=“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.[/quote]

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]

[quote=“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)[/quote]

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: