Dúvida ao remover registro

3 respostas
V

Uma dúvida, para eu remover o objeto do banco, seria melhor eu fazer uma recuperação através do find, sendo que o find busca pela chave primária, não teria como usar o find sem ser pela chave????? o que eu queria evitar é usar 2 metódos para excluir um registro, sei q poderia colocar em 1 mas pela organização coloquei em 2 como abaixo.

a chamada ao método
cadastroDAO.removerRegistro(cadastroDAO.recuperaRegistro("Vitor Hugo"));
Recupera
public Cadastro recuperaRegistro(String nome) 
	 {
		 Cadastro cadastro = new Cadastro();
		 factory = Persistence.createEntityManagerFactory("exfuncionarios");
		 manager = factory.createEntityManager();
			System.out.print("Recuperando registro... ");
			EntityTransaction tx = manager.getTransaction();
			tx.begin();
			try 
			{
				Query query = manager.createNamedQuery("Cadastro.recupera");
				query.setParameter("nome",nome);
				cadastro = (Cadastro) query.getSingleResult();
				
				
				tx.commit();
				manager.close();
				factory.close();
				
				return cadastro;
			} 
			catch (RuntimeException e) 
			{ 
				e.printStackTrace();
				tx.rollback();
				return cadastro;
			}
		}
excluir
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 = manager.find(Cadastro.class,2);
				// se fosse usar o find aki é só pela chave primária

				manager.remove(cadastro);

				tx.commit();
			
				System.out.println("OK");
				manager.close();
				factory.close();
			}
			catch (RuntimeException e) 
			{
				e.printStackTrace();
				tx.rollback();
			}
		}

3 Respostas

P

cara…o delete() recebe um objeto mapeado…pra isso vc precisa popula-lo antes de executar o método, eu sempre fiz o load() antes via PK mesmo…o q vc pode tentar fazer eh criar uma nova instancia do objeto q vc vai apagar, apenas com a PK e tentar executar o delete(), mas acho q nao funciona nao…

V

to usando JPA, acho q não tem o método delete(), tem o remove() mas mesmo eu jogando um objeto populado ele não vai… só se eu recuperasse pelo método find

P

eh, falei do delete() e load() pq estou mais acostumado com o hibernate…hehehehe…mas acho q tem q carregar o objeto antes de apagar mesmo…

Criado 12 de fevereiro de 2007
Ultima resposta 12 de fev. de 2007
Respostas 3
Participantes 2