Problemas com EntityManager e persistence.xml

9 respostas
M

Ola pessoal,
Bom to com um problema em relação ao EntityManager, esta sendo gerada uma excessão que eu ja vi muita gente falando
No Persistence provider for EntityManager named retaguarada
no entanto não achei a resoluçaõ do problema
Minha classe dao esta assim
package RetaguardaDao;

import Retaguarda.persistencia.Usuario;

import java.util.List;

import javax.persistence.EntityManager;

import javax.persistence.EntityManagerFactory;

import javax.persistence.Persistence;

import javax.persistence.Query;

public class UsuarioDao {

private EntityManagerFactory em;

private EntityManager getEntityManager(){

return em.createEntityManager();

}

public UsuarioDao() {
em = Persistence.createEntityManagerFactory(“retaguarada”);

}

public void inserir(Usuario usuario) {

EntityManager em = getEntityManager();

try {

em.getTransaction().begin();//inicia a seção
em.persist(usuario); // persiste o objeto e devolve-o sincronizado

      em.getTransaction().commit(); // encerra a transação

      em.refresh(usuario); // atualiza a referência do objeto

  } catch (Exception e) {
      em.getTransaction().rollback(); // desfaz a transação

  }finally{
      em.close();
  }

}

public void atualizar(Usuario usuario) {
EntityManager em = getEntityManager();

try {
      em.getTransaction().begin();
      
      em.merge(usuario);

      em.getTransaction().commit(); // encerra a transação

      em.refresh(usuario); // atualiza a referência do objeto

  } catch (Exception e) {
      em.getTransaction().rollback(); // desfaz a transação

  }finally{
      em.close();
  }

}

public void excluir(Usuario usuario) {
EntityManager em = getEntityManager();

try {

      Usuario ref = em.find(Usuario.class, usuario.getLogin());
      em.remove(ref); // remove o objeto

      em.getTransaction().commit(); // encerra a transação

  } catch (Exception e) {
      em.getTransaction().rollback(); // desfaz a transação

  }finally{
      em.close();
  }

}

public List obterTodos() {

EntityManager em = getEntityManager();

try{

Query qry = em.createQuery(select u from Usuario u);

return qry.getResultList();

}finally{

em.close();

}

}

public Usuario obterPorChave(String login) {

EntityManager em = getEntityManager();

try{

Query qry = em.createQuery(select u from Usuario u where u.login = :param1);

qry.setParameter(param1”, login);

return (Usuario) qry.getSingleResult();

}finally{

em.close();

}

}

public Usuario obterPorLoginSenha(String login, String senha) {

EntityManager em =getEntityManager();

try{

Query qry = em.createQuery(select u from Usuario u where u.login = :param1 and u.senha = :param2);

qry.setParameter(param1”, login);

qry.setParameter(param2”, senha);

return (Usuario) qry.getSingleResult();

}finally{

em.close();

}

}
/**
 * @return the em
 */
public EntityManagerFactory getEm() {
    return em;
}

/**
 * @param em the em to set
 */
public void setEm(EntityManagerFactory em) {
    this.em = em;
}

}

e meu xml assim

<?xml version="1.0" encoding="UTF-8"?> org.hibernate.ejb.HibernatePersistence Retaguarda.persistencia.Usuario Retaguarda.persistencia.Contrato Retaguarda.persistencia.Empresa Retaguarda.persistencia.Contratada

bom em alguns foruns o pessoal disse que o xml não estava sendo encontrado e que deveria estar no ClassPath
não entendi bem como deveria fazer isso!! se alguem puder me ajudar agradeço!

9 Respostas

Paulo_Silveira

mathias, qual erro esta dando?

poste por favor a stacktrace inteira do erro. e diga em que diretorio voce esta colocando o persistence.xml!

abracos!

Andre_Brito

Oi.
Seria interessante colocar seus códigos entre as tags de código (code).

Uma coisa que reparei foi que o nome da sua persistence unit é “Retaguarda.entidade”, enquanto que você está criando a Factory com o nome de “retaguarda”. Troca o “retaguarda” por “Retaguarda.entidade” e coloca o resultado aqui.

L

No Persistence provider for EntityManager named retaguarada

"
retaguarada
"
Este nome esta correto??

talvez seja Retaguarda

M

Pessoal desculpe o erro de portugues mais no codigo o nome ta correto
não é esse o problema não!

L

Cara posta seu dao e tds suas classes ai, mas utilize a tag Code

M

desculpem esqueci o persistense esta no MET

e o Driver jdbc esta incluso

M

alterei para Retaguarda.entidade deu execessão no jdbc acho que é este o problema realmente
vou corrigir o projeto e digo o que aconteceu
obrigado a todos

Andre_Brito

MET?
O arquivo persistence.xml deve estar na pasta onde ficam os srcs do Java, dentro de outra pasta, chamad META-INF.
Ficaria mais ou menos assim:
java-src
…br
…x
…entidades
…daos
…view
…META-INF
…persistence.xml

M

Meta-inf perdão

Andre brigadão cara resolveu meu pro era meu unit realmente
estava passando Retaguarda estava incorreto

Criado 24 de outubro de 2009
Ultima resposta 24 de out. de 2009
Respostas 9
Participantes 4