Erro cabuloso

Então… ainda continuo na busca da solução do cadastro do meu sistema.
esse é o trecho que eu tento achar a solução. estou tentando cadastrar o cliente e os itens do produto que estao numa JTable.

antes de mais nada… as referencias OneToMany e o ItemPedido estão certinhas.

[code]private void cadastrarActionPerformed(java.awt.event.ActionEvent evt) {
try {
Pedido p = new Pedido();
p.setNumped(new Integer(1)); //isso é um teste
p.setCodcliente(cliente);

    for (int i = 0; i < mtpd.getLista().size(); i++) {
        disbeb.modelo.ItemPedido it = new disbeb.modelo.ItemPedido();
        it.setPedido(p);
        it.setProduto(produto);
        it.setQuantidade( (int) mtpd.getLista().get(i).getQuantidade());
        it.setValortotal(mtpd.getLista().get(i).getValortotal());           
        lista.add(it);
    }
    p.setItens(lista);
    
    
    p = (Pedido) GenericDAO.getInstance().persistir(p);
    if(p!=null){
         JOptionPane.showMessageDialog(null, "Pedido Cadastrado");
    }
    else {
        JOptionPane.showMessageDialog(null, "Pedido NÃO cadastrado");
    }
    lista.clear();[/code]

e o erro que esta dando é assim:
Exception in thread “AWT-EventQueue-0” java.lang.OutOfMemoryError: Java heap space
e aparece muitas vezes essa linha e o sistema nao sai da execução, ai o sistema trava, o netbeans trava…

ahueuauehuahehuauhehuae qqer ajuda é valida…
ate

private void cadastrarActionPerformed(java.awt.event.ActionEvent evt) {                                             
    try {   
        Pedido p = new Pedido();   
        p.setNumped(new Integer(1)); //isso é um teste   
        p.setCodcliente(cliente);   
  
        for (int i = 0; i < mtpd.getLista().size(); i++) {   
            /*O erro aparentemente esta aqui ao criar instancia de item pedido
             *  tem fazer assim ItemPedido it = new ItemPedido()
              */
            disbeb.modelo.ItemPedido it = new disbeb.modelo.ItemPedido();   
            it.setPedido(p);   
            it.setProduto(produto);   
            it.setQuantidade( (int) mtpd.getLista().get(i).getQuantidade());   
            it.setValortotal(mtpd.getLista().get(i).getValortotal());             
            lista.add(it);   
        }   
        p.setItens(lista);   
           
           
        p = (Pedido) GenericDAO.getInstance().persistir(p);   
        if(p!=null){   
             JOptionPane.showMessageDialog(null, "Pedido Cadastrado");   
        }   
        else {   
            JOptionPane.showMessageDialog(null, "Pedido NÃO cadastrado");   
        }   
        lista.clear(); 

paulofafism eu não concordo com vc…o que tem haver o modo como ela referencia uma classe com OutOfMemory ???

Na verdade seria interessante vc nos dizer primeiro em qual linha acontece isso. Outra coisa q não entendi é essa variavel lista de onde ela vem ???

[quote]paulofafism eu não concordo com vc…o que tem haver o modo como ela referencia uma classe com OutOfMemory ???

Na verdade seria interessante vc nos dizer primeiro em qual linha acontece isso. Outra coisa q não entendi é essa variavel lista de onde ela vem ???[/quote]

Bem acho que esta na maneira como ela instancia os objetos. Pois ja tives problemas parecidos.

Olhando mais atentamente o erro pode esta aqui mesmo, veja este treco de codigo

it.setQuantidade( (int) mtpd.getLista().get(i).getQuantidade()); esta lista esta mesmo estranha

     it.setPedido(p);   
            it.setProduto(produto);   
            it.setQuantidade( (int) mtpd.getLista().get(i).getQuantidade());   
            it.setValortotal(mtpd.getLista().get(i).getValortotal());             
            lista.add(it); 

Olha, pra mim, o erro está aqui:

#         for (int i = 0; i &lt; mtpd.getLista().size(); i++) {     
#             /*O erro aparentemente esta aqui ao criar instancia de item pedido 
#              *  tem fazer assim ItemPedido it = new ItemPedido() 
#               */  
#             disbeb.modelo.ItemPedido it = new disbeb.modelo.ItemPedido();     
#             it.setPedido(p);     
#             it.setProduto(produto);     
#             it.setQuantidade( (int) mtpd.getLista().get(i).getQuantidade());     
#             it.setValortotal(mtpd.getLista().get(i).getValortotal());               
#             lista.add(it);     
#         } 

Como você está incrementando a lista no for e está ao mesmo tempo utilizando o size dela como limite, o Java encontra aí um loop infinito e dá OutOfmemory…

Detalhe, estou deduzindo que sua variável lista seja a mesma referência de objeto do mtpd.getLista()…

[quote]Como você está incrementando a lista no for e está ao mesmo tempo utilizando o size dela como limite, o Java encontra aí um loop infinito e dá OutOfmemory…

Detalhe, estou deduzindo que sua variável lista seja a mesma referência de objeto do mtpd.getLista()…[/quote]

Humm não tinha pensado que a variavel lista se a mesma referência do objeto mtpd.getLista(), bem provável

Agora sim…

ja estava dando erro nessa linha

it.setQuantidade( (int) mtpd.getLista().get(i).getQuantidade());

mas… eu preciso cadastrar todos os produtos que se encontram na Jtable, por isso do

for (int i = 0; i < mtpd.getLista().size(); i++) { 

mas nao sei como cadastrar os itens dessa tabela, essa foi uma solução que um colega me forneceu. mas tentei adaptar a outro conselho do meu professor. Ai outro professor meu nao mecheu em nada e disse q tava certo, mas nao sabe consertar o erro.

Sugestões?