JPA - No Persistence provider for EntityManager

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

[i][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.<init>(BaseDao.java:13)
at bar.client.Client.main(Client.java:12)[/color][/i]

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

[code]

<?xml version="1.0" encoding="UTF-8"?> oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider bar.model.Sushi [/code]
  • 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

[code]package bar.client;

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

public class BaseDao {

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;
	}
	
}

}[/code]

  • Client

[code]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);
	
}

}[/code]

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

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

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

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

e não tem como criá-la…

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)

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á

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.

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

[quote=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[/quote]

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

[quote=alcirBarros][quote=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[/quote]

Também pode fusiona assim sem problemas, esta usando Maven ?[/quote]

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:

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.