Retornando Objetos Hibernate HQL

Bom, tenho a seguinte questão: Tenho uma Classe Venda e ItemVenda.

Quando faço o HQL abaixo, se uma venda tiver 20 itens, ele retorna 20 Objetos pra mim.

   SELECT venda FROM Venda venda 
   JOIN FETCH venda.itens itens  
  WHERE venda.id = 200

Porém o que eu quero é que ele retorne apenas 1 objeto VENDA populado com esses 20 itens no atributo : itens (que é um Set).

Como fazer ?

Tenta ver se o DISTINCT resolve:

SELECT DISTINCT  venda FROM Venda venda   
JOIN FETCH venda.itens itens    
WHERE venda.id = 200 

Isso faz com que a venda seja retornada com seus itens já carregados.

Eu não entendi porque ele não retorna 1 Venda popula com vários itens ? Ele retorna 20 vendas.

[quote=ayslanms]Tenta ver se o DISTINCT resolve:

SELECT DISTINCT  venda FROM Venda venda   
JOIN FETCH venda.itens itens    
WHERE venda.id = 200 

Isso faz com que a venda seja retornada com seus itens já carregados.[/quote]
A classe Venda possui uma coleção de ItemVenda? Se possuir o fetch join é desnecessário, basta dizer a forma de carregamento, lazy ou eager.

Outra coisa, não abra vários tópicos sobre o mesmo assunto, você já havia aberto um sobre este problema pela manhã. Aguarde as respostas.

Você quer dizer que se eu fizer:

SELECT venda FROM Venda venda WHERE venda.id = 200

Eu posso fazer no meu código:

  for(Venda venda: listVenda){
   for(ItemVenda item: venda.getItens()){
      System.out.println(item.getNome());
  }
}

Certo ?

[quote=rlanhellas]Você quer dizer que se eu fizer:

SELECT venda FROM Venda venda WHERE venda.id = 200

Eu posso fazer no meu código:

  for(Venda venda: listVenda){
   for(ItemVenda item: venda.getItens()){
      System.out.println(item.getNome());
  }
}

Certo ?[/quote]
Sim!