Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Muitos para Muitos

Não estou sabendo implementar muitos para muitos, segue modelo das classes

public class Produto {
    private Integer codigoProduto;
    private String nomeProduto;
    private Double precoProduto;
    private Integer quantidadeProdutoEmEstoque;
    private String descricaoProduto;

    private List<Peca> pecasProduto;
}
public class Peca {

    private Integer codigoPeca;
    private String nomePeca;
    private Double precoPeca;
    private Integer quantidadePecaEmEstoque;
    private String descricaoPeca;

    private List<Produto> listaProdutos;
}

(omitidos Getters e Setters)... Criei uma classe de testes e instanciei 2 objetos da classe Produto e 4 objetos da classe Peca ai criei duas listas uma com todas as peças e outra com todos os produtos e depois setei elas da seguinte forma.

        p.setPecasProduto(listaPecas);
        p2.setPecasProduto(listaPecas);
        pc.setListaProdutos(listaProdutos);
        pc2.setListaProdutos(listaProdutos);
        pc3.setListaProdutos(listaProdutos);
        pc4.setListaProdutos(listaProdutos);

Agora gostaria de imprimir a lista de peças de cada produto, mas não sei como fazer para dizer que determinada peça pertence aquele produto. Alguém poderia me ajudar? Obrigado!

4 respostas

Uma coisa interessante para manter a consistência dos dados é que no setter de um atributo , setar o relacionamento , exemplo :

public void setListaProdutos(List<Produto> listaProdutos){
    this.listaProdutos = listaProdutos;
    for(Produto p :  listaProdutos){
        if(p.getListaPecas() == null)
            p.setListaPecas(new ArrayList());
        p.getListaPecas().add(p);
    }

}

e para imprimir

public void imprimeProdutosPeca(){
    System.out.println(nomePeca);
    for(Produto p :  listaProdutos){
        System.out.println(p,getNomeProduto());
    }
}

Boa noite Breno, desculpe a ignorância, mas achei um pouco confuso, será que poderia explicar um pouco a sua lógica??? Obrigado!

solução!

Consertei aqui , tinha um erro.

Na classe Peca , ao adicionar uma lista de produtos temos 1 peça com n produtos, mas esses n produtos possuem essa peça na lista de peças dele?

public void setListaProdutos(List<Produto> listaProdutos){
    this.listaProdutos = listaProdutos;
    for(Produto p :  listaProdutos){
        if(p.getListaPecas() == null)
            p.setListaPecas(new ArrayList());
        p.getListaPecas().add(this);
    }

}

Aqui neste post , existe também uma exemplificação

http://blog.caelum.com.br/como-nao-aprender-orientacao-a-objetos-relacionamento-bidirecional/

Obrigado Breno!