Estou tendo problemas com uma aplicação que estou desenvolvendo com o netbeans 5.5.1 e hibernate 3.2.1.
O problemas está ocorrendo quando tento remover um objeto, da seguinte forma:public void remove(Endereco end) {
EntityManager em = JPAUtil.getInstance().getEntityManager();
end = em.merge(end);
em.remove(end);
em.getTransaction().commit();
em.close();
}
public void testRemove() throws Exception {
System.out.println("remove: remoção de registro de cliente da base de dados");
Random rn = new Random();
Endereco end = setPropEnd(clienteAtual,"Centro","Curitiba","Rua das Camélias, 15"+rn.nextInt(300),true,"PR",0,1);
EnderecoDAO endDAO = new EnderecoDAOImpl();
int endId = endDAO.add(end);
Endereco end2 = endDAO.getById(endId);
endDAO.remove(end2);
Endereco end1 = endDAO.getById(endId);
assertNull(end1);
}
O erro que está retornando é o seguinte:
Error while commiting the transaction
javax.persistence.RollbackException: Error while commiting the transaction
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:71)
at br.com.escriba.jmala.dao.EnderecoDAOImpl.remove(EnderecoDAOImpl.java:88)
at br.com.escriba.jmala.dao.interfaces.EnderecoDAOTest.testRemove(EnderecoDAOTest.java:256)
Caused by: org.hibernate.ObjectDeletedException: deleted entity passed to persist: [br.com.escriba.jmala.entity.Endereco#]
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:90)
at org.hibernate.impl.SessionImpl.firePersistOnFlush(SessionImpl.java:644)
at org.hibernate.impl.SessionImpl.persistOnFlush(SessionImpl.java:636)
at org.hibernate.engine.CascadingAction$9.cascade(CascadingAction.java:323)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:268)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:216)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)
at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:296)
at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:242)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:219)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)
at org.hibernate.engine.Cascade.cascade(Cascade.java:130)
at org.hibernate.event.def.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:131)
at org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:122)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:65)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:54)
... 17 more
Bom, já dei uma boa pesquisada na Internet e até agora não encontrei nada de útil. Será que isso pode ser um BUG do hibernate?