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