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
Recupera
[code]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;
}
}[/code]
excluir
[code]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();
}
}[/code]