Como deletar multiplas linhas do banco com o hibernate?

9 respostas
xxmayconxx

Quando tento fazer isso da esse erro aqui:

Exception in thread main org.hibernate.jdbc.BatchedTooManyRowsAffectedException: Batch update returned unexpected row count from update [0]; actual row count: 6; expected: 1

at org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:95)

at org.hibernate.jdbc.Expectations$BasicExpectation.verifyOutcome(Expectations.java:70)

at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:90)

at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)

at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)

at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:268)

at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:189)

at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)

at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)

at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)

at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383)

at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133)

at pack.Annote.main(Annote.java:36)

meu pojo só tem um atributo nome getters e setters, na tabela também só tem um campo nome,se a query que eu coloquei encontrar só uma linha ele deleta, se encontar mais de um da esse erro ai acima.

9 Respostas

D

Será que este objeto não possui relacionamento no banco de dados com outras tabelas? Em caso de sim vc teria que configurar o cascade.

xxmayconxx

Não, não há relacionamento de tabelas, é uma coisa bem simples, só pra aprendizado, no meu banco só tem essa tabela criada.

fmachado.dev

Mas como você ta fazendo a exclusão?

via query ou usando os métodos dos hibernate?

abraços

xxmayconxx

métodos do hibernate

session.delete(objeto)

assim.

fmachado.dev

Olha, eu não sei se tem como excluir usando "objetos"
mas tem como fazer com HQL

String hql = "delete from Teste where nome = :nome";
        Query query = session.createQuery(hql);
        query.setString("nome","Testando a exclusão");
        query.executeUpdate(); // retorna a quantidade de linhas que foram afetadas.

Se alguém tiver uma solução melhor posta ai =PP

Abraços

D

Posta seu código completo por favor fica mais fácil de ajudar.

jyoshiriro

Quer dizer que tua tabela não tem um campo para a chave primária?
Ou tem e é justamente o campo “nome”?

Se respndeu “sim” para uma dessas perguntas então o motivo pode ser este.

jyoshiriro

Felipe,

pode fazer desse jeito ai, com certeza.

fmachado.dev

vlw =P
é, eu também ia perguntar sobre o Id, porque até agora eu não entendi como um objeto pode excluir vários registros no banco

abraços

Criado 25 de julho de 2011
Ultima resposta 25 de jul. de 2011
Respostas 9
Participantes 4