[RESOLVIDO] Método delete() no Hibernate, deletar um registro no banco

6 respostas
Metallica

Olá,

li a apostila da Caelum FJ-21 o capítulo de Hibernate e segui aquele exemplo da classe Produto.

Só que ainda tem uma dúvida: para deletar um registro do banco não é só usar delete(produto); ?
(Sendo produto um objeto da classe mapeada - Produto)

Eu faço isso mas não deleta nada. Já tentei usar o método commit() de Transaction mas nada acontece também.

PS: Uso mySQL, configurei tudo certo, tanto que o método save() funciona perfeitamente.

Grato.

6 Respostas

L

Metallica:
Olá,

li a apostila da Caelum FJ-21 o capítulo de Hibernate e segui aquele exemplo da classe Produto.

Só que ainda tem uma dúvida: para deletar um registro do banco não é só usar delete(produto); ?
(Sendo produto um objeto da classe mapeada - Produto)

Eu faço isso mas não deleta nada. Já tentei usar o método commit() de Transaction mas nada acontece também.

PS: Uso mySQL, configurei tudo certo, tanto que o método save() funciona perfeitamente.

Grato.


Boa tarde, você está passando o id do registro que deseja excluir?
posta o erro pra gente dar uma olhada…

L

ops ressusitei sem quere kkkkkkkkk eskeçe…

foi mal!

Metallica
luanibarra:
Metallica:
Olá,

li a apostila da Caelum FJ-21 o capítulo de Hibernate e segui aquele exemplo da classe Produto.

Só que ainda tem uma dúvida: para deletar um registro do banco não é só usar delete(produto); ?
(Sendo produto um objeto da classe mapeada - Produto)

Eu faço isso mas não deleta nada. Já tentei usar o método commit() de Transaction mas nada acontece também.

PS: Uso mySQL, configurei tudo certo, tanto que o método save() funciona perfeitamente.

Grato.


Boa tarde, você está passando o id do registro que deseja excluir?
posta o erro pra gente dar uma olhada..


Boa tarde luanibarra, o tópico é novo, não é ressucitar não.

Eu estou deletando (tentando) pelo método delete(), que como parâmetro recebe um objeto.
O problema é que não tá dando erro algum, ele simplesmente não deleta e não exibe nada (mesmo cercando com try-catch e imprimindo a stack-trace).

É um método da interface Session do pacote org.hibernate
void delete(Object object)
            throws HibernateException

    Remove a persistent instance from the datastore. The argument may be an instance associated with the receiving Session or a transient instance with an identifier associated with existing persistent state. This operation cascades to associated instances if the association is mapped with cascade="delete".
L

ops intao ta …
posta o fonte para eu dar uma olhada…
vc trouce o objeto que deseja deletar para o estado persistent antes de chamar o delete?

Metallica

Opa, aqui está:

ProdutoDao tem os métodos que o Hibernate usa.
TestaDao executa os métodos em si.

public class ProdutoDao {
    private Session session;

    public ProdutoDao(Session session) {
        this.session = session;
    }

    public void deleta(Produto p){
        this.session.delete(p);
    }
    
    public Produto consulta(Long id){
        return (Produto) this.session.load(Produto.class, id);
    }

    //outros métodos
}
public class TestaDao {

    public static void main(String[] args) {
        Session session = new HibernateFactory().getSession(); 
        ProdutoDao dao = new ProdutoDao(session);
        
        Produto produto = (Produto)dao.consulta(new Long(1));      
        //O produto com ID 1 existe e tem todos os campos preenchidos na tabela   
        dao.deleta(produto);
    }
}
Metallica

Consegui!

Precisava de um objeto Transaction e do método commit() :

public void deleta(Produto p){  
        Transaction t = this.session.beginTransaction();
        
        t.begin();
        this.session.delete(p);
        t.commit();  
     }
Criado 17 de maio de 2008
Ultima resposta 20 de mai. de 2008
Respostas 6
Participantes 2