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

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.

[quote=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.[/quote]
Boa tarde, você está passando o id do registro que deseja excluir?
posta o erro pra gente dar uma olhada…

ops ressusitei sem quere kkkkkkkkk eskeçe…

foi mal!

[quote=luanibarra][quote=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.[/quote]
Boa tarde, você está passando o id do registro que deseja excluir?
posta o erro pra gente dar uma olhada…

[/quote]
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

[code]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".[/code]

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?

Opa, aqui está:

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

[code]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

}[/code]

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

}
[/code]

Consegui!

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

[code] public void deleta(Produto p){
Transaction t = this.session.beginTransaction();

    t.begin();
    this.session.delete(p);
    t.commit();  
 }  

[/code]