Left Join retonando somente um registro

Olá pessoal,

Tenho a tabela X com relacionamento @OneToMany com a tabela Y.

Em um relatório eu preciso que seja exibido o registro da tabela X e o ultimo registro da tabela Y.

É o mesmo caso de um site de compras onde é exibido a descrição do pedido e o ultimo histório do processo de compra (EM ANALISE, AUTORIZADO, ENVIADO ETC) em uma unica liha.

Alguem sabe como fazer isso?

A solução provisoria que eu fiz foi colocar uma datatable no jsf exibindo somente uma linha, mas isso não é correto, pois a SQL retorna todas as linhas.

Vlw

Pode usar o seguinte SQL:

SELECT camposPai, camposFilho FROM pai p
LEFT JOIN filho f ON p.id = f.id_pai AND (f.data = (SELECT MAX(f1.data) FROM filho f1 WHERE f1.id_pai = p.id))

Obs: considerei que o campo que define “último” é o campo data da tabela filho. Esta sintaxe pode váriar dependendo do banco de dados, precisa conferir como o “=” se comporta com selects de grupo aninhado.

Obrigado samuel.grigolato!

Vou testar!

Você sabe como ficaria usando o criteria?

Vlw

Está falando de Hibernate?

Sei que com HQL pode aninhar SELECTS da mesma forma, com Criteria talvez tenha como, mas não vou saber exemplificar.