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