JPA - No Persistence provider for EntityManager

11 respostas
C

Galera, eu to precisando de uma ajuda. Estou tentando rodar um exemplo simples do JPA, so que ta rolando a seguinte exception :

[color=red]Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named pul: No META-INF/persistence.xml was found in classpath.

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:154)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)
at bar.client.BaseDao.(BaseDao.java:13)
at bar.client.Client.main(Client.java:12)[/color]

Eu ja coloquei a pasta META-INF no classpath, ja tentei mudar o nome e nada, vcs poderiam me dar uma ajuda?? Segue os fontes : - Persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema">
    <persistence-unit name="pul">
    <provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
    <class>bar.model.Sushi</class>
        <properties>
            <property name="toplink.jdbc.driver" value="org.h2.Driver" />
            <property name="toplink.jdbc.url" value="jdbc:h2:tcp://localhost/C/database/sushi" />
            <property name="toplink.jdbc.password" value="" />
            <property name="toplink.jdbc.user" value="sa" />
            <property name="toplink.logging.level" value="INFO" />
        </properties>
</persistence-unit>
</persistence>
- Sushi,java
package bar.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Sushi {
	
	@Id 
	@Column(insertable = false)
	private int id;
	private String name;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	

}
- BaseDao
package bar.client;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class BaseDao<T> {
	
	private static EntityManagerFactory emf;
	private EntityManager em;
	
	public BaseDao(){
		emf = Persistence.createEntityManagerFactory("pul");
		em = emf.createEntityManager();
	}
	
	public boolean create(T obj){
		em.getTransaction().begin();
		try{
			em.persist(obj);
			em.getTransaction().commit();
			return true;
		}catch(Exception e ){
			e.printStackTrace();
			em.getTransaction().rollback();
			return false;
		}
		
	}
	
	

}
- Client
package bar.client;

import bar.model.Sushi;

public class Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		BaseDao<Sushi> dao = new BaseDao<Sushi>();
		
		Sushi hot = new Sushi();
		hot.setName("HOT FILADELFIA");
		
		Sushi fil = new Sushi();
		fil.setName("FILADELFIA");
		
		dao.create(hot);
		dao.create(fil);
		
	}

}

11 Respostas

R

Boa noite!

O seu arquivo "Persistence.xml" começa com a primeira letra maiúscula mesmo> Por que Java é case sensitive... e se caso estiver, ele não vai localizá-lo.

O local do arquivo descritor é em "META-INF/persistence.xml" (com letra inicial minúscula)

Abraço,

Visite o Blog do Perereca: http://www.blogdoperereca.blogspot.com

R

o meu esta dentro do src/main/resource/META-INF e to pegando esse erro pq será?
o nome está persistence.xml

P

o persistence.xml deve ficar em “src/META-INF”.

C

O projeto é WEB no netbeans e não existe a pasta /src/META-INF

e não tem como criá-la…

A

To com o mesmo problema só que a diferença e que estou usando maven

21/05/2012 01:26:39 org.hibernate.cfg.Environment <clinit> INFO: HHH000206: hibernate.properties not found 21/05/2012 01:26:39 org.hibernate.cfg.Environment buildBytecodeProvider INFO: HHH000021: Bytecode provider name : javassist 21/05/2012 01:26:39 org.hibernate.ejb.Ejb3Configuration configure INFO: HHH000318: Could not find any META-INF/persistence.xml file in the classpath Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named appvendas at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:30) at br.com.selfSystem.Teste.main(Teste.java:14)

L

No projeto maven cria uma pasta source src/main/java.

Dentro dela cria uma pasta meta-inf e dentro dela coloca o persistence.xml

No projeto do netbeans na pasta raiz do projeto onde estão os fontes cria a pasta meta-inf e coloca o persistence.xml lá

A

Vlw lele_vader Consegui aqui

estava faltando a META-INF mesmo so que o meu aqui ela fica em
rsc/main/resources/META-INF/persistence.xml

Obrigadao cara vlw.

N

Só à nível de registro mesmo…Eu estou usando o netbeans e estava com o mesmo problema, do arquivo persistence.xml não ser encontrado
Eu estava colocando a pasta meta-inf dentro da pasta src, mas só funfou assim:
\src\java\META-INF\persistence.xml

A

nathyecomp:
Só à nível de registro mesmo…Eu estou usando o netbeans e estava com o mesmo problema, do arquivo persistence.xml não ser encontrado
Eu estava colocando a pasta meta-inf dentro da pasta src, mas só funfou assim:
\src\java\META-INF\persistence.xml

Também pode fusiona assim sem problemas, esta usando Maven ?

N

alcirBarros:
nathyecomp:
Só à nível de registro mesmo…Eu estou usando o netbeans e estava com o mesmo problema, do arquivo persistence.xml não ser encontrado
Eu estava colocando a pasta meta-inf dentro da pasta src, mas só funfou assim:
\src\java\META-INF\persistence.xml

Também pode fusiona assim sem problemas, esta usando Maven ?

Tô usando não…Pode ser por isso…Ressuscitei o tópico pq vi em outros posts essa mesma dúvida, de colocar na raiz da pasta src e não funcionar… :slight_smile:

H

Se está utilizando maven o local correto é /src/main/resources/META-INF/persistence.xml
caso não esteja usando maven e estiver na estrutura padrão de diretório do eclipse /src/META-INF/persistence.xml

sendo do conteudo:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
	<persistence-unit name="coloqueonomeaqui">
	</persistence-unit>
</persistence>

Pois não é necessário explicitar o provider.

Criado 26 de maio de 2009
Ultima resposta 28 de mai. de 2013
Respostas 11
Participantes 9