Problemas com exclusão no banco

5 respostas
higornucci

Olá!

Eu tenho uma interface de consulta que tem uma tabela a qual recebe os dados do banco.
jtConsulta.setModel(new DefaultTableModel(
                new Object[][]{},
                new String[]{"Código", "Nome", "CNPJ", "Endereco", "Nº.", "Cidade", "UF", "E-Mail"}
        ));

        jtConsulta.getColumnModel().getColumn(0).setPreferredWidth(50);
        jtConsulta.getColumnModel().getColumn(1).setPreferredWidth(240);
        jtConsulta.getColumnModel().getColumn(2).setPreferredWidth(80);
        jtConsulta.getColumnModel().getColumn(3).setPreferredWidth(210);
        jtConsulta.getColumnModel().getColumn(4).setPreferredWidth(50);
        jtConsulta.getColumnModel().getColumn(5).setPreferredWidth(80);
        jtConsulta.getColumnModel().getColumn(6).setPreferredWidth(30);
        jtConsulta.getColumnModel().getColumn(7).setPreferredWidth(180);

        DAO<Empresa> daoE = new DAOFactory().getEmpresaDAO();
        lista = daoE.listaTudo();

        DefaultTableModel tabela_clientes_modelo = (DefaultTableModel)jtConsulta.getModel();
        tabela_clientes_modelo.setNumRows(0);

        for(Empresa empresa : lista) {

            tabela_clientes_modelo.addRow(new Object[]  {
                empresa.getId().toString(),
                empresa.getNome(),
                empresa.getCnpj(),
                empresa.getEndereco(),
                empresa.getNumero(),
                empresa.getCidade(),
                empresa.getEstado(),
                empresa.getEmail()
            });
        }

        jtConsulta.setModel(tabela_clientes_modelo);
O usuario pode selecionar uma linha e, se desejar, pode excluir ela do banco.
private void jbExcluirActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        Integer linha = jtConsulta.getSelectedRow();
        
        if(linha >= 0) {
            Empresa empresa = lista.get(linha);

            DAO<Empresa> dao = new DAOFactory().getEmpresaDAO();

            dao.remove(empresa);
            System.out.println(empresa.getNome());
        } else {
            JOptionPane.showMessageDialog(this, "Selecione uma linha para exclusão.");
        }

    }
Aqui vai minha classe DAO.
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.guaicurus.dao;

import java.util.List;
import org.hibernate.Session;

/**
 *
 * @author higornucci
 */
public class DAO<T> {

    private Session session;
    private Class classe;
    private DAOFactory factory = new DAOFactory();

    public DAO(Session session, Class classe) {
        this.session = session;
        this.classe = classe;
    }

    public void adiciona(T p) {
        factory.beginTransaction();
        session.save(p);
        factory.commit();
        factory.close();
        session.close();
    }

    public void remove(T p) {
        factory.beginTransaction();
        this.session.delete(p);
        factory.commit();
        factory.close();
        session.close();
    }

    public void atualiza(T p) {
        factory.beginTransaction();
        this.session.merge(p);
        factory.commit();
        factory.close();
        session.close();
    }

    public List<T> listaTudo() {
        List<T> lista = this.session.createCriteria(this.classe).list();
        session.close();
        return lista;
    }

    public T procura(Long id) {
        return (T) session.load(this.classe, id);
    }
}

O problema é que não exclui. Estou olhando isso a horas, e a lógica parece certa p/ mim.

Alguem sabe onde estou errando?

5 Respostas

renanreismartins

mas amigo, qual o erro ?

tente tornar sua entidade gerenciada, depois exclua

abrassss

rogelgarcia

Mesmo problema nesse tópico
http://www.guj.com.br/posts/list/199805.java

Sugeri usar… session.flsuh()

Não sei se funcionou lá… o cara ainda nao respondeu

higornucci

O session.flush deu certo. Muito obrigado, rogelgarcia!

Se bem que eu não sei o que o flush faz

rogelgarcia

O flush… pega os comandos que tem que ser executados no banco e executa…

Quando vc dá um comando no hibernate ele nao executa na hora… dando um flush… vc força a execução

C

Bom dia galera meu dao é mais simples, ele ta icluindo e deletando, mas não ta atualizando e não da nenhuma mensagem de erro, se alguem puder dizer onde to errando, desde ja grato abraço, segue abaixo o codigo:

public void atualizar(Produto produto) throws SQLException{
         conectar();
         String com = " UPDATE produto Set nome = '" + produto.getNome()
                 + "', descricao ='" + produto.getDescricao() + "', preco = "
                 + produto.getPreco() + " WHERE codProduto= " + produto.getCodProduto()+";";
         System.out.println("Atualizada");
         try{
             comando.executeUpdate(com);
         }catch (SQLException e) {
             e.printStackTrace();
         }finally{
             fechar();
         }
     }
private void jButtonatualizaActionPerformed(java.awt.event.ActionEvent evt) {                                                
          Produto produto = new Produto();
          DaoProduto daoProduto = new DaoProduto();
       produto.setCodProduto(Integer.parseInt(jTextFieldcodigoproduto.getText()));
            produto.setNome(jTextFieldproduto.getText());
            produto.setDescricao(jTextFielddescricao.getText());
            produto.setPreco((float) Double.parseDouble(jTextFielpreco.getText()));
        try {
            daoProduto.atualizar(produto);
        } catch (SQLException ex) {
            Logger.getLogger(NewJFrameCadastroProduto.class.getName()).log(Level.SEVERE, null, ex);
        }
Criado 3 de março de 2010
Ultima resposta 6 de mar. de 2010
Respostas 5
Participantes 4