Oi Pessoal,
Sinceramente, nunca vi um projeto open source mais MAL documentado que o Hibernate! Putz!!! 
Seguinte… Um consulta HQL do Hibernate o qual retorne um objeto que faça referência a outro(s) [ tipo associação pai/filho ] retornará 10 objetos-pai [ quando existirem 10 objetos-filho diferentes ] mesmo que o objeto-pai seja o mesmo em todos os 10.
Isso eu vi que é seu comportamento normal (apesar de que, já que o pai possui um Set contendo referências a filhos, seria interessante retornar apenas um pai, e o Set conter os 10 filhos).
Acontece que dessa forma o código abaixo não funciona:
Produto produto;
for ( int i = 0; i < result.size(); i++ ) {
produto = ( Produto )result.get( i );
Iterator it = produto.getCodigoBarras().iterator();
dtm.addRow( new Object[]
{
produto.getIdProduto(),
( ProdutoCodigoBarras )it.next() ).getCodigoBarras(),
produto.getDescricao(),
nf.format( produto.getPreco() )
}
);
}
Não funciona porque a chamada iterator() em cada incremento do laço for irá fazer referência sempre a primeira posição (lembre-se: isso aí está retornando 10 objetos-pai, os quais são iguais, e que cada um desse 10 objetos-pai possui 1 Set, com 10 objetos-filhos diferentes dentro).
Qual a forma mais elegante de exibir os diferentes códigos de barras para o mesmo produto. :?
Atenciosamente,
Paulo Oliveira
