Dúvida HQL - left join

Bom dia amigos,

Estou criando um relatório no iReport, no qual a conexão é feita através do hibernate. Até ai tudo ok.
Preciso executar uma query onde utilizo o “left join”.
Testei a query (em sql) no banco e funcionou direitinho.
O meu grande problema é “traduzí-la” para HQL por causa do uso do “left join”.

Segue a query em sql:

select *  
from ocorrencia a  
left join obs b on b.validacao = true and a.funcionario_id = b.funcionario_id, saldo s  
where a.funcionario_id = s.funcionario_id  
and s.mes_ano = "02/2008"  
and a.empresa_id = 11  
order by a.funcionario_id, a.data  

Será que alguém poderia me ajudar?

cara vou te dar um exemplo pra ve se clareia ae pra você

public class Curso {
private String descricao;
private String nome;
private Set disciplinas;
private Integer id;
...
}

public class Disciplina {
private String nome;
private String ementa;
private Set turmas;
private Curso curso;
private Integer id;
...
}

agora o exemplo que te interessa:

from Curso curso
left join fetch curso.disciplinas
where curso.nome = :nome

Explicação:
Adicionou-se left join fetch a consulta e depois indicou-se a coleção que deveria
ser inicializada, neste caso curso.disciplinas Deste modo, quando a busca for
executada, vai retornar os objetos Curso com as suas respectivas Disciplinas instanciadas.

Tirei esse exemplo de um tutorial que tenho aqui. Se precisar só falar!

[quote=rafael_ra]cara vou te dar um exemplo pra ve se clareia ae pra você

public class Curso {
private String descricao;
private String nome;
private Set disciplinas;
private Integer id;
...
}

public class Disciplina {
private String nome;
private String ementa;
private Set turmas;
private Curso curso;
private Integer id;
...
}

agora o exemplo que te interessa:

from Curso curso
left join fetch curso.disciplinas
where curso.nome = :nome

Explicação:
Adicionou-se left join fetch a consulta e depois indicou-se a coleção que deveria
ser inicializada, neste caso curso.disciplinas Deste modo, quando a busca for
executada, vai retornar os objetos Curso com as suas respectivas Disciplinas instanciadas.

Tirei esse exemplo de um tutorial que tenho aqui. Se precisar só falar![/quote]

Olá Rafael,

Entendi +/-, mas não consigo enxergar uma luz para o meu caso.
No meu caso eu tenho uma tabela ocorrencia e uma tabela obs.
Para cada registro na tabela ocorrencia, poderá existir (ou não) um ou mais registros da tabela obs.
E outra coisa, na minha classe ocorrencia eu não tenho uma coleção de obs, eu fiz ao contrário.
Ou seja, na minha classe obs existe um atributo da classe ocorrencia.
O meu problema teve início quando eu tentava executar a query (hql) no iReport, ele não reconhece o termo “left”.

Se puder me ajudar, agradeço.

cara já deu uma olhada no manual de referência do Hibernate? se não veja la

http://www.hibernate.org/hib_docs/reference/en/pdf/hibernate_reference.pdf

na pagina 154 começa a falar sobre os join, da uma lida la pra ver se clarea um pouco ae.

[quote=rafael_ra]cara já deu uma olhada no manual de referência do Hibernate? se não veja la

http://www.hibernate.org/hib_docs/reference/en/pdf/hibernate_reference.pdf

na pagina 154 começa a falar sobre os join, da uma lida la pra ver se clarea um pouco ae.[/quote]

Vou dar olhar, qualquer coisa postarei novamente.

Obrigada!

http://www.hibernate.org/hib_docs/entitymanager/reference/en/html/queryhql.html

7.3

O Tópico é um pouco antigo, mas se alguém precisar, eu usei o LEFT JOIN obj WITH <condição>

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html
14.3 Associations and joins