Delete no Java Hibernate

5 respostas
S

como faço para apagar um dado no banco tendo apenas o codigo como informação?
to tentando dessa forma:

public void excluirFornecedor(int codigo) {
        try {
            HibernateUtil.getSessionFactory();
            Session sessao = HibernateUtil.getSession();
            sessao.createSQLQuery("delete from fornecedor where codigo = "+codigo).executeUpdate(); 
            
        }catch(Exception err) {
            
        }
    }

ele esta executando o delete mas não esta removendo.

5 Respostas

M

Olá Sleipbr,

Essa não é uma forma convencional de se executar esse tipo de operação usando o Hibernate.
O que ocorre é que o delete é um Bulk Operation, ou seja, ele é usando para operações em lote, pois o mesmo não atualiza os caches do Hibernate.

O mais comum é fazer o seguinte:

SessionFactory sessionFactory =  HibernateUtil.getSessionFactory();

      //Considerando que o "codigo" seja chave primária 
      sessionFactory.getSession().delete(new Fornecedor(codigo));

Até!!

V

colega, se voce quer usar o HQL, atente para o fato de que se sua classe “Fornecedor” está com o “f” maiúsculo, entao no HQL ele tambem tem que estar com o “f” maiúsculo… ficaria assim:

delete from Fornecedor where …

eu prefiro usar Criteria, sao poucos os casos que eu uso HQL… nao vejo muito sentido em usar HIbernate e continuar escrevendo o SQL na mao hehehe

R

Amigo, voce ta usando o delete de forma nao recomendada, do ponto de vista Hibernate, a unica coisa que voce precisa é:

Transaction tx = session.beingTransaction();
session.delete(Objeto);
tx.commit();
session.close();

so isso ja funciona como voce quer.

H

Esse post mostra como usar o bulk delete: JPA Consultas e Dicas

S

conseguir da maneira que o rof falou! ^^

Criado 18 de novembro de 2012
Ultima resposta 19 de nov. de 2012
Respostas 5
Participantes 5