No Persistence provider for EntityManager named - Usando MAVEN

2 respostas
B

Boa tarde,

Pessoal estava estudando Maven com Eclipse, mas acabei travando neste erro.
Já procurei no fórum erros parecidos, mas nenhum resolveu meu problema.
Se alguém conseguir me ajudar, eu agradeço.

Fonte

<?xml version="1.0" encoding="UTF-8"?>
<persistence 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_1_0.xsd"
	version="1.0">
	<!--Nome do contexto que configura o Provedor de Persistencia -->
	<persistence-unit name="default">
		<provider>org.hibernate.ejb.HibernatePersistence</provider> 
		<properties>
			<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/dbteste" />
			<property name="javax.persistence.jdbc.password" value="metallica" />
			<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
			<property name="javax.persistence.jdbc.user" value="postgres" />
			<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider" />
			<property name="hibernate.hbm2ddl.auto" value="update" />
			<property name="hibernate.show_sql" value="true" />
			<property name="hibernate.format_sql" value="true" />
			<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
		</properties>
	</persistence-unit>
</persistence>
package br.com.dkjavaweb.entidade.util;

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

public class JPAUtil {
	
	private static EntityManagerFactory emf =
			Persistence.createEntityManagerFactory("default");
	
	public static EntityManager getEntityManager(){
		return emf.createEntityManager();
	}

}
package dkjavaweb;

import javax.persistence.EntityManager;

import br.com.dkjavaweb.entidade.Usuario;
import br.com.dkjavaweb.entidade.util.JPAUtil;

public class JPATeste {
	
	public static void main(String[] agrs){
		
		Usuario novo = new Usuario();
		EntityManager em = JPAUtil.getEntityManager();
		
		novo.setNome("Zé");
		novo.setEmail("[email removido]");
		novo.setSenha("123abc");
		
		em.getTransaction().begin();
		em.persist(novo);
		em.getTransaction().commit();
		
	}

}
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>br.com.dk</groupId>
	<artifactId>dkjavaweb</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<name>dkjavaweb</name>
	<description>Projeto Java Web Avançado</description>

	<!-- Propriedades -->

	<properties>
		<hibernate.groupid>org.hibernate</hibernate.groupid>
		<hibernate.version>4.3.4.Final</hibernate.version>
		<slf4j.version>1.7.6</slf4j.version>
		<postgresql.version>9.1-901.jdbc4</postgresql.version>
	</properties>

	<!-- Propriedades -->

	<dependencies>

		<!-- Dependecia do Hibernate -->
		<dependency>
			<groupId>${hibernate.groupid}</groupId>
			<artifactId>hibernate-entitymanager</artifactId>
			<version>${hibernate.version}</version>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>${slf4j.version}</version>
		</dependency>
		<!-- Banco de Dados -->
		<dependency>
			<groupId>postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<version>${postgresql.version}</version>
		</dependency>
		<!-- Banco de Dados -->

	</dependencies>
</project>

Erro:

xception in thread "main" java.lang.ExceptionInInitializerError
	at dkjavaweb.JPATeste.main(JPATeste.java:13)
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named default
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
	at br.com.dkjavaweb.entidade.util.JPAUtil.<clinit>(JPAUtil.java:10)
	... 1 more

2 Respostas

H

Em qual pasta você colocou o arquivo persistence.xml?

Coloque na pasta resources/META-INF/persistence.xml sendo que resources é a pasta que o maven cria.

B

Aqui está a estrutura do projeto.

Criado 4 de março de 2014
Ultima resposta 5 de mar. de 2014
Respostas 2
Participantes 2