HIbernate...EntityManagerFactoryProvider.createEntityManagerFactory

Tento gerar tabelas via classes com anotation e me dá erro abaixo

o que pode ser ???

abs

import javax.persistence.Persistence;

public class GeraTabelas {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 //Cria uma configuração 
		         Persistence.createEntityManagerFactory("exemploJPA");
	}

}
---

Exception in thread "main" java.lang.NullPointerException
	at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createEntityManagerFactory(EntityManagerFactoryProvider.java:120)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
	at br.com.exemplojpa.teste.GeraTabelas.main(GeraTabelas.java:13)

--



--

<?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-instance" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
    
  <persistence-unit name="exemploJPA"  >
  <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <properties>
      <property name="hibernate.archive.autodetection" value="class"/>
      <property name="hibernate.connection.driver_class"  value="com.mysql.jdbc.Driver" />
      <property name="hibernate.connection.url"  value="jdbc:mysql://localhost:3306/exemplojpa" />
      <property name="hibernate.connection.username" value="root"/>
      <property name="hibernate.connection.password" value="root"/>
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
      <property name="hibernate.show_sql" value="true" />
      <property name="hibernate.hbm2ddl.auto" value="create" />
    </properties>
  </persistence-unit>
  
</persistence>

--


@Entity
@Table(name = "Usuario")
public class Usuario {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer id;

	@Column
	private String login;

	@Column
	private String password;

	@Column

	private String nome;

	/*
	 * Gets e Sets
	 */
	public Integer getId() {
		return id;
	}

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

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

}

declare um objeto do tipo EntityManagerFactory

a no seu main:

e na sua classe usuario utiliza apenas a anotação @Entity

tenta ai de novo e posta o resultado.



public class GeraTabelas {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		EntityManagerFactory factory = null;
	      factory =        Persistence.createEntityManagerFactory("exemploJPA1");
		
		System.out.println("gerou....");
	}

}
---

<persistence-unit name="exemploJPA1" transaction-type="RESOURCE_LOCAL">
  <provider>org.hibernate.ejb.HibernatePersistence</provider>
  <class>br.com.exemplojpa.modelo.Usuario</class>
    <properties>
      <property name="hibernate.archive.autodetection" value="class"/>
      <property name="hibernate.connection.driver_class"  value="com.mysql.jdbc.Driver" />
      <property name="hibernate.connection.url"  value="jdbc:mysql://localhost:3306/exemplojpa" />
      <property name="hibernate.connection.username" value="root"/>
      <property name="hibernate.connection.password" value="root"/>
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
      <property name="hibernate.show_sql" value="true" />
      <property name="hibernate.hbm2ddl.auto" value="create" />
    </properties>
  </persistence-unit>

---

@Entity
public class Usuario {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer id;

	@Column
	private String login;

	@Column
	private String password;

	@Column

	private String nome;

Tenta colocar no persistence as classes que voce vai utilizar

Usuario

:frowning:

mesma coisa…???


<persistence-unit name="exemploJPA1" transaction-type="RESOURCE_LOCAL">
  <provider>org.hibernate.ejb.HibernatePersistence</provider>
   <class>br.com.exemplojpa.modelo.Usuario</class>
    <class>br.com.exemplojpa.modelo.Centro</class>
    <class>br.com.exemplojpa.modelo.Universidade</class>
    <properties>
      <property name="hibernate.archive.autodetection" value="class"/>
      <property name="hibernate.connection.driver_class"  value="com.mysql.jdbc.Driver" />
      <property name="hibernate.connection.url"  value="jdbc:mysql://localhost:3306/exemplojpa" />
      <property name="hibernate.connection.username" value="root"/>
      <property name="hibernate.connection.password" value="root"/>
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
      <property name="hibernate.show_sql" value="true" />
      <property name="hibernate.hbm2ddl.auto" value="create-tables" />
    </properties>
  </persistence-unit>

---

Exception in thread "main" java.lang.NullPointerException
	at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createEntityManagerFactory(EntityManagerFactoryProvider.java:120)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
	at br.com.exemplojpa.persistencia.UsuarioDAO.<init>(UsuarioDAO.java:25)
	at br.com.exemplojpa.negocio.UsuarioBusiness.inserirUsuario(UsuarioBusiness.java:20)
	at br.com.exemplojpa.teste.TesteExemploJPA.main(TesteExemploJPA.java:39)

--

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

import br.com.exemplojpa.modelo.Usuario;

/**
 * 
 * 
 * 
 * 
 * 
 * 
 */
public class UsuarioDAO {

	private EntityManagerFactory factory = null;

	private EntityManager manager = null;

	public UsuarioDAO() {
		factory = Persistence.createEntityManagerFactory("exemploJPA1");
		manager = factory.createEntityManager();
	}

	/**
	 * Inserindo um usuário
	 * 
	 * @param usuario
	 */
	public void inserirUsuario(Usuario usuario) {

		EntityTransaction transaction = manager.getTransaction();

		try {
			transaction.begin();

			manager.persist(usuario);

			transaction.commit();

		} catch (Exception e) {
			transaction.rollback();

			System.err.println("Erro: " + e.getMessage());

		} finally {
			manager.close();
		}

	}

	/**
	 * Pesquisar um usuário
	 * 
	 * @param usuario
	 */
	public Usuario pesquisarUsuario(Integer id, Usuario usuario) {
		EntityTransaction transaction = manager.getTransaction();

		Usuario retorno = null;

		try {

			transaction.begin();

			retorno = (Usuario) manager.find(Usuario.class, id);

		} catch (Exception e) {
			transaction.rollback();

			System.err.println("Erro: " + e.getMessage());
		} finally {
			manager.close();
		}

		return retorno;

	}

}
---
**
 * 
 * 
 * 
 * 
 * 
 * 
 */
public class TesteExemploJPA {

	public static void main(String[] args) {
		/*
		 * Criando o objeto usuário
		 */
		Usuario usuario = new Usuario();
		
		usuario.setLogin("mary");
		usuario.setPassword("mary");
		usuario.setNome("lock");
		
		
		
		
		/*
		 * Instanciando a classe de negócio
		 */
		UsuarioBusiness usuarioBusiness = new UsuarioBusiness();

		/*
		 * Inserindo um usuário no banco
		 */
		usuarioBusiness.inserirUsuario(usuario);

		/*
		 * Pesquisando o usuário inserido no banco
		 */

		
		
		Usuario usuarioBanco = new Usuario();

		usuarioBanco = usuarioBusiness.pesquisarUsuario(usuario);

		/*
		 * Mostrando o resultado da consulta no banco
		 */
		System.out.println();
		System.out.println("         Exemplo JPA         ");
		System.out.println("Id: " + usuarioBanco.getId());
		System.out.println("Login: " + usuarioBanco.getLogin());
		System.out.println("Senha: " + usuarioBanco.getPassword());
		System.out.println("Nome: " + usuarioBanco.getNome());

	}

}

[quote=paribe]

[code]

<persistence-unit name=“exemploJPA1” transaction-type=“RESOURCE_LOCAL”>
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>br.com.exemplojpa.modelo.Usuario</class>
<properties>
<property name=“hibernate.archive.autodetection” value=“class”/>
<property name=“hibernate.connection.driver_class” value=“com.mysql.jdbc.Driver” />
<property name=“hibernate.connection.url” value=“jdbc:mysql://localhost:3306/exemplojpa” />
<property name=“hibernate.connection.username” value=“root”/>
<property name=“hibernate.connection.password” value=“root”/>
<property name=“hibernate.dialect” value=“org.hibernate.dialect.MySQLDialect” />
<property name=“hibernate.show_sql” value=“true” />
<property name=“hibernate.hbm2ddl.auto” value=“create” />
</properties>
</persistence-unit>

[/code][/quote]
Seu problema pode ser que esta tentando utilizar as propiedades do Hibernate sem importar as bibliotecas, voce deve estar utilizando o tooplink e no seru persistence as propeidades do Hibernate.
Ficaria mais ou menos assim:


&lt;persistence-unit name="exemploJPA1" transaction-type="RESOURCE_LOCAL"&gt;
  &lt;provider&gt;oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvide&lt;/provider&gt;
  &lt;class&gt;br.com.exemplojpa.modelo.Usuario&lt;/class&gt;
    
    &lt;properties&gt;
        &lt;property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/exemplojpa" /&gt;
        &lt;property name="toplink.jdbc.user" value="root"/&gt;
        &lt;property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/&gt;
       &lt;property name="toplink.jdbc.password" value="root"/&gt;
      &lt;/properties&gt;
    &lt;/persistence-unit&gt;
&lt;/persistence&gt; 

Vê se é isso e posta, pois não sei ao certo se é realmente isso

Obrigado pelo retorno…

mas tenho uma duvida só consigo fazer isso com um toplink…fiz um teste com TopLink da Oracle
mas queria ver outra situação com outra opção sem esse da Oracle ???

O que você sugeri …

Tenho que usar um toplink ??? minha duvida

Cara seria melhor utilizar o Hibernate, devido material e exemplo na net.

Mas cada um caso é um caso.