Problemas com exclusão no banco

Olá!

Eu tenho uma interface de consulta que tem uma tabela a qual recebe os dados do banco.

[code] 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);[/code]

O usuario pode selecionar uma linha e, se desejar, pode excluir ela do banco.

[code] 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.");
    }

}[/code]

Aqui vai minha classe DAO.

[code]/*

  • 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 {

    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§;
    factory.commit();
    factory.close();
    session.close();
    }

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

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

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

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

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

Alguem sabe onde estou errando?

mas amigo, qual o erro ?

tente tornar sua entidade gerenciada, depois exclua

abrassss

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

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

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

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

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