Erro cabuloso

7 respostas
Izahhbelinha

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.

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();

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

7 Respostas

paulofafism
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();
Giulliano

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 ???

paulofafism

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 ???

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);
RaulCarlin

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()

paulofafism

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()

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

Giulliano

Agora sim…

Izahhbelinha

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?

Criado 4 de outubro de 2008
Ultima resposta 4 de out. de 2008
Respostas 7
Participantes 4