Jpa + hibernate **** que raiva

27 respostas
L

Pessoal nao to conseguindo usar o jpa+hibernate… o jpa+eclipseLink eu consigo persistir no banco postgres…

Aqui esta no meu main( se uso eclipselink funfa de boamas se mudo pra hibernate da erro):

EntityManagerFactory objfFactory = Persistence.createEntityManagerFactory(Alga2PU);

EntityManager manager = objfFactory.createEntityManager();

olha o erro que da quando eu tento usar hibetnate como biblioteca de persistencia:


Exception in thread “main” javax.persistence.PersistenceException: No Persistence provider for EntityManager named Alga2PU

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85)

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)

at alga2.Alga2.main(Alga2.java:22)

C:\Users\valdemir\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1

FALHA NA CONSTRUÇÃO (tempo total: 1 segundo)

Ja tem varios dias que to tentando fazer e nada…to desistindo ja… Alguem poderia da uma luz ?

27 Respostas

darlan_machado

E a configuração do persistence.xml, está como?

darlan_machado

Tá faltando código aí.

L
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence 
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="Alga2PU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>alga2.Aluno</class>
<properties>
<property name="hibernate.cache.provider_class" 
value="org.hibernate.cache.NoCacheProvider"/>
<property name="javax.persistence.jdbc.url" 
value="jdbc:postgresql://localhost:5432/escolabd"/>
 <property name="javax.persistence.jdbc.user" value="postgres"/>
 <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
 <property name="javax.persistence.jdbc.password" value="1500"/>
</properties>
</persistence-unit>
</persistence>
darlan_machado

Você está com dificuldades para postar o código?
É simples, antes de começar com o código,pule uma linha, deixe 4 espaços e coloque o conteúdo

<teste>Funciona!</teste>
Daniel_Dias

se estiver usando a versão 5 do hibernate , muder o :

para :

<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

L

ja tinha feito isso…mas pra desencargo de consciencia fiz dinovo e nao deu certo

darlan_machado

Bom, sem o código todo, fica difícil ajudar.

L

amigo… eu postei o codigo todo… veja acima

javaflex

Deve estar faltando alguma lib relacionada ao hibernate. Baixa novamente o Hibernate, faz do zero seguindo algum tutorial.

L

eu ja baixei umas 3 vezes…versoes diferentes ate…e nao consigo… o esttranho é que se eu deixar como eclipselink ele da certo

L

se eu mudar a biblioteca de persistencia para hibernate(jpa 2.1) ele da erro

img%202

javaflex

Faz uma aplicação do zero “HelloWorldComHibernate”, só com Hibernate, sem essa mistura com EclipseLink, que só vai atrapalhar no que você quer. Segue um tutorial, onde o foco seja aprender a configurar o Hibernate, depois você adapta no seu projeto.

L

e como seria isso? to baixando outra versao do hibernate…agora a 5.0… mas ja testei varias e sempre erro…

javaflex

!?

Pesquisei no google: https://www.caelum.com.br/apostila-java-web/uma-introducao-pratica-ao-jpa-com-hibernate/

E nao se limite a uma fonte.

L

ja estou lendo agora…

com a versao 5.0 ta dando esse erro:

Exception in thread “main” javax.persistence.PersistenceException: No Persistence provider for EntityManager named Alga9PU

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61)

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)

at alga9.Alga9.main(Alga9.java:23)

C:\Users\valdemir\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1

FALHA NA CONSTRUÇÃO (tempo total: 0 segundos)
no meu main tem isso:

EntityManagerFactory emf = Persistence.createEntityManagerFactory(Alga9PU);

EntityManager em = emf.createEntityManager();

o que tem de errado nesse entitymanagerfactory

javaflex

Nao é só pra ler, faça um projeto do zero seguindo este ou outro tutorial. Pode procurar um que já seja na versao 5, depois que souber fazer funcionar o mínimo necessário com hibernate conforme é ensinado, então você parte pro seu projeto.

darlan_machado

Em todos os tutoriais que vi sobre hibernate 5, a configuração do persistence.xml não é como nesta linha

<provider>org.hibernate.ejb.HibernatePersistence</provider>

Ela foi substituída por essa

<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

Outra coisa, se vai usar o hibernate, exclua as libs do eclipselink. Limpe o projeto, essa foi a dica do @javaflex, começar um do zero.

L

amigo… eu testei ja isso: org.hibernate.jpa.HibernatePersistenceProvider

e tambem fiz do zero e nada… eu to comecando achar que o hibernate com postgrres+netbeans nao funfa… eu to pesquisando no google e tem muita gente com a mesma duvida e ninguem acha a soluçao…
PS: nas minhas pesquisas no google percebi que a maioria eh com netbeans… no eclipse nao lembro de visto alguem postar erros…

nao queria instalar o eclipse…

darlan_machado

Bom, fera, pelo tempo que perdeu tentando consertar o que está fazendo, já teria conseguido baixar, instalar e utilizar o eclipse.
Eu só uso eclipse e, desta maneira, não seria proveitoso instalar o netbeans para validar se é ou não verdade o que você está colocando.
De qualquer forma, boa sorte.
Só não esqueça que tanto o netbeans quanto o eclipse ou o intellij são ferramentas e, como tal, deveriam facilitar a vida e não complicar.

L

no meu main tem isso:
EntityManagerFactory objfactory = Persistence.createEntityManagerFactory(“Alga2PU”);

e o erro eh esse:

Exception in thread “main” javax.persistence.PersistenceException: No Persistence provider for EntityManager named Alga2PU

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61)

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)

at alga2.Alga2.main(Alga2.java:27)

C:\Users\valdemir\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1

FALHA NA CONSTRUÇÃO (tempo total: 0 segundos)
javaflex

Ainda não seguiu o tutorial?

L

segui mas usando o netbeans. mas da o mesmo erro

javaflex

Então não seguiu. Ou se quer usar Netbeans procura um tutorial explicando no Netbeans.

L

pelo jeito o pessoal nao vai poder me ajudar… nao tenho outr opcao… vou voltar um degrau e reler os materiais sobre JPA… pois eu acho que o erro é em relacao ao JPA e nao ao hibernate…

Exception in thread “main” javax.persistence.PersistenceException: No Persistence provider for EntityManager named Alga2PU

L

Sera que alguem vai ajudar???

javaflex

Já está usando o Eclipse ou perdendo tempo ainda com Netbeans?

Emerzoom

Bom dia a todos!

Cara, não tem erro. Eu até fiz um projeto novo aqui do zero, no Eclipse Luna, com Hibernate 5.2, JPA 2.0 e funcionou certinho.

Eu vou tentar te mostrar o que eu fiz com um exemplo até não muito inteligível, mas, vc tenta aí. Se não rolar, faz um descarrego, um despacho, uma missa, um culto, ritual, seja lá qual for sua crença ou credo, pq, cara, não tem erro!

<!-- 1. Persistence.xml: -->

      <?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="simplejpa-pu" transaction-type="RESOURCE_LOCAL">
    		<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    		
    		<!-- Annotated entity classes -->
            <class>com.simple.entity.Student</class>
            <class>com.simple.entity.Course</class>
            
            <!-- Config props -->
    		<properties>
     
    			<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/simplejpa" />
    			<property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
    			<property name="hibernate.connection.username" value="postgres" />
    			<property name="hibernate.connection.password" value="*****" />
    			
    			<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
    			<property name="hibernate.flushMode" value="FLUSH_AUTO" />
    			<property name="hibernate.hbm2ddl.auto" value="update" />
    			<property name="hibernate.show_sql" value="true" /> <!-- Show SQL in console -->
                <property name="hibernate.format_sql" value="true" /> <!-- Show SQL formatted -->
    		</properties>
    	</persistence-unit>
    </persistence>
  1. Classe Course

    package com.simple.entity;
    
     import java.io.Serializable;
     import java.sql.Date;
    
     import javax.persistence.Column;
     import javax.persistence.Entity;
     import javax.persistence.GeneratedValue;
     import javax.persistence.GenerationType;
     import javax.persistence.Id;
     import javax.persistence.Table;
    
     @Entity
     @Table(name = "course")
     public class Course implements Serializable {
    
     	/**
     	 * 
     	 */
     	private static final long serialVersionUID = -9071942957966778145L;
    
     	@Id
     	@GeneratedValue(strategy = GenerationType.AUTO)
     	@Column(name="id")
     	private Long id;
     	
     	@Column(name="name")
     	private String name;
     	
     	@Column(name="startDate")
     	private Date startDate;
     		
     	@Column(name="endDate")
     	private Date endDate;
     	
     	public Course() {
     		// TODO Auto-generated constructor stub
     	}
    
     	public Long getId() {
     		return id;
     	}
    
     	public void setId(Long id) {
     		this.id = id;
     	}
    
     	public String getName() {
     		return name;
     	}
    
     	public void setName(String name) {
     		this.name = name;
     	}
    
     	public Date getStartDate() {
     		return startDate;
     	}
    
     	public void setStartDate(Date startDate) {
     		this.startDate = startDate;
     	}
    
     	public Date getEndDate() {
     		return endDate;
     	}
    
     	public void setEndDate(Date endDate) {
     		this.endDate = endDate;
     	}
    
     	@Override
     	public String toString() {
     		return "Course [id=" + id + ", name=" + name + ", startDate=" + startDate + ", endDate=" + endDate + "]";
     	}
    
     }
    
  2. Classe Student

    package com.simple.entity;

import java.io.Serializable;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "student")
public class Student implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 2142125727900505238L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name="id")
	private Long id;
	
	@Column(name="name")
	private String name;
	
	@Column(name="year")
	private Date year;
	
	@OneToMany(cascade = CascadeType.ALL, fetch=FetchType.LAZY)
	private List<Course> courseList;
	
	public Student() {
		// TODO Auto-generated constructor stub
		
		courseList = new ArrayList<Course>();
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Date getYear() {
		return year;
	}

	public void setYear(Date year) {
		this.year = year;
	}

	public List<Course> getCourseList() {
		return courseList;
	}

	public void setCourseList(List<Course> courseList) {
		this.courseList = courseList;
	}

	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", year=" + year + ", courseList=" + courseList
				+ "]";
	}

}
  1. ConnectionFactory

    package com.simple.dao.impl;

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

    public class ConnectionFactory {

    private ConnectionFactory() {
     	// TODO Auto-generated constructor stub
     }
     
     public static EntityManagerFactory getInstance() {
     	return Persistence.createEntityManagerFactory("simplejpa-pu");
     }
    

    }

E ainda uma imagem do que está sendo utilizado de bibliotecas:

Criado 3 de fevereiro de 2018
Ultima resposta 28 de fev. de 2018
Respostas 27
Participantes 5