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!