Não remove pelo JPA

2 respostas
V

Galera, to tentando remover um registro pelo metódo remove e não dá erro mas também não remove

Eu recupero legal com outro método e passo o objeto cadastro completo com as informações, o método abaixo então executa dá tudo ok, mas não faz nada, alquém sabe onde está o erro??

public void removerRegistro(Cadastro cadastro) 
	 {
		 factory = Persistence.createEntityManagerFactory("exfuncionarios");
		 manager = factory.createEntityManager();
			System.out.print("Excluindo registro... ");
			EntityTransaction tx = manager.getTransaction();
			tx.begin();
			try 
			{
				Cadastro cad = merge(cadastro);
				manager.remove(cad);

				tx.commit();
				System.out.println("OK");
				manager.close();
				factory.close();
			} 
			catch (RuntimeException e) // <-- importante, agora é runtime
			{ 
				e.printStackTrace();
				tx.rollback();
			}
		}

2 Respostas

J

tenta chamar manager.flush() logo apos o commit. Isto deve resolver seu problema.

Att.

V

Tenho que usar o merge?? qual a função dele?

Quando coloquei a linha

ele criou o código vazio

private Cadastro merge(Cadastro cadastro) 
	{
		
		return null;
	}

quando rodo dá o erro

[color=“red”]

java.lang.IllegalArgumentException: Entity must be managed to call remove: modelo.Cadastro@60e128, try merging the detatched and try the remove again.

at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.performRemove(UnitOfWorkImpl.java:2747)

at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.remove(EntityManagerImpl.java:199)

at modelo.DAO.CadastroDAO.removerRegistro(CadastroDAO.java:70)

at controle.Principal.main(Principal.java:14)

[/color]

coloquei a linha q vc me disse, mas deu o erro acima com ou sem ela

Criado 2 de fevereiro de 2007
Ultima resposta 7 de fev. de 2007
Respostas 2
Participantes 2