Olá pessoal estou com o seguinte erro no meu código JPA + jsf + Hibernate, quero listar todas as pessoas no banco de dados Mysql 5.1.45. O problema é que recebi o seguinte erro em executar a query. Voces podem dar uma ajudinha…?
![mensagem](/uploads/default/original/3X/5/4/54d9b0377935abb5963948682a744c279d86b8c5.PNG)
![erro%20de%20sintaxe](/uploads/default/original/3X/6/5/653fe5937186a36f253cc997feb074bb65ebe45b.PNG)
O meu códuigo JPA:
public List<I> getListEntity(Class <I> entidade){
EntityManager entityManager = JPAUtil.getEntityManager();
EntityTransaction entityTransaction = entityManager.getTransaction();
entityTransaction.begin();
List<I> result = entityManager.createNativeQuery("from " +
entidade.getName())
.getResultList();
entityTransaction.commit();
entityManager.close(); // fecha a transação
return result;
Remove esse commit!
Afinal qual era pra ser a utilidade dele aí ?
Olá Jonathan_Medeiros ele trata da transação com o banco, afinal já tentei remover a linha e continua a dar o mesmo erro…!!!
Compreendo, é que eu não havia trabalhado desta forma, sempre utilizei da seguinte forma abaixo, e pra mim pelo menos sempre funcionou!
Exemplo:
public class ClasseQualquer {
protected EntityManager entityManager;
public List<I> findAll(Class<I> entidade) {
return entityManager.createQuery("FROM " + entidade.getName()).getResultList();
}
}
Perfeito Jonathan_Medeiros, fiz exatamemento o que fizeste antes e funcionou perfeitamente, obrigado cara, descobri que entityManager.createNativeQuery trabalha com SQL puro.
Agora já consigo listar perfeitamente:
Ai surge a seguinte questão, quando faço remover ele actualiza no banco mas guarda na memoria o item excluído ou seja tenho os registo 1,2,3,4…quando elimino o registo quatro ele deviria começar a contar de três novamente certo?
![organiza%C3%A7%C3%A3o](//www.guj.com.br/uploads/default/original/3X/8/e/8e2817e45aed63d208bb59c28f88590d7faa7e5a.PNG)
public List<I> getListEntity(Class <I> entidade){
EntityManager entityManager = JPAUtil.getEntityManager();
EntityTransaction entityTransaction = entityManager.getTransaction();
entityTransaction.begin();
//List<I> result = entityManager.createNativeQuery("SELECT * FROM pessoa " + entidade.getName()).getResultList();
List<I> result = entityManager.createQuery("from " + entidade.getName()).getResultList();
entityTransaction.commit();
entityManager.close(); // fecha a transação
return result;