Consegui resolver minha dúvida anterior, mas sobrou um problema na linha que faz o getReference do método que exclui o registro do BD:
Como está hoje e funcionando:
objeto = em.getReference(Tbimpacto.class, id); // onde Tbimpacto é nome de uma entity bean do projeto
quero passar o tipo de objeto de tal forma que o
método possa receber qualquer classe de entidade
objeto = em.getReference(<objeto.class>, id);
É possível esse tipo de abstração ou vai contra os padrões?
Consegui resolver o problema: segue a resolução do método para excluir registro de uma tabela passando o objeto por parâmetro e capturando seu tipo em tempo de execução. O objetivo com isso é que consigo ter apenas uma classe de persistência JPA que pode receber qualquer classe de entidade e fazer as operações CRUD.
public void destroy(Serializable entidade, String id) throws NonexistentEntityException, RollbackFailureException, Exception {
EntityManager em = null;
Class tipo = Class.forName(entidade.getClass().getName());
try {
em = getEntityManager();
utx = em.getTransaction();
utx.begin();
Object objeto;
try {
objeto = em.getReference(tipo, id);
} catch (EntityNotFoundException enfe) {
throw new NonexistentEntityException("O registro " + id + " não existe.", enfe);
}
em.remove(objeto);
utx.commit();
} catch (Exception ex) {
try {
utx.rollback();
} catch (Exception re) {
throw new RollbackFailureException("Ocorreu um erro e a exclusão não foi concluída", re);
}
throw ex;
} finally {
if (em != null) {
em.close();
}
}
}