Gerar tabelas com o Hibernate e o Eclipse

Sei que já ouve varias discussões sobre este aspecto mas nenhuma me ajudou. Não estou conseguindo gerar minhas tabelas pelo hibernate.
Segue o código:
Banco de Dados e a criação da tabela:

[code]package BancoDeDados;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = “Biologia”)
public class BancoBio {
@Id
@Column(name = “id”)
Integer id;

public BancoBio() {
	super();
}

public BancoBio(Integer id) {
	super();
	this.id = id;
}

@Override
public int hashCode() {
	final int prime = 31;
	int result = 1;
	result = prime * result + ((id == null) ? 0 : id.hashCode());
	return result;
}

@Override
public boolean equals(Object obj) {
	if (this == obj)
		return true;
	if (obj == null)
		return false;
	if (getClass() != obj.getClass())
		return false;
	BancoBio other = (BancoBio) obj;
	if (id == null) {
		if (other.id != null)
			return false;
	} else if (!id.equals(other.id))
		return false;
	return true;
}

@Override
public String toString() {
	return "BancoBio [id=" + id + "]";
}

public Integer getId() {
	return id;
}

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

}
[/code]
Componente Main com acesso ao banco (básico):

[code]package Main;

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

import BancoDeDados.BancoBio;

public class MainBD {
public static void main(String[] args) {
//Obtém a fabrica de gerenciadores de persistência
EntityManagerFactory emf = Persistence.createEntityManagerFactory(“Vestibular”);
//Obtém o gerenciador de persistência
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
BancoBio questao = new BancoBio();
questao.setId(2);
em.merge(questao);
em.getTransaction().commit();
}

}
[/code]
Persistence.xml:

<?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="Vestibular" transaction-type="RESOURCE_LOCAL">
		<class>BancoDeDados.BancoBio</class>
		<properties>
			<property name="javax.persistence.jdbc.driver" value="org.hibernate.dialect.PostgreSQLDialect"/>
			<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/Vestibular"/>
			<property name="javax.persistence.jdbc.user" value="postgres"/>
			<property name="javax.persistence.jdbc.password" value="postgres"/>
			<property name="generateDdl" value="true" />    <!--Também já botei: <property name="hibernate.hbm2ddl.auto" value="create/update/create-drop"/> Ps: nehuma funcionou  -->
		</properties>
	</persistence-unit>
</persistence>

Erro:

[EL Info]: 2013-09-11 18:46:47.138--ServerSession(1844350239)--EclipseLink, version: Eclipse Persistence Services - 2.5.0.v20130507-3faac2b
[EL Info]: connection: 2013-09-11 18:46:47.612--ServerSession(1844350239)--file:/C:/Workspace/Vestibular/build/classes/_Vestibular login successful
[EL Warning]: 2013-09-11 18:46:47.782--UnitOfWork(2048752498)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: org.postgresql.util.PSQLException: ERRO: relação "biologia" não existe
  Posição: 16
Error Code: 0
Call: SELECT id FROM Biologia WHERE (id = ?)
	bind => [1 parameter bound]
Query: ReadObjectQuery(referenceClass=BancoBio )
Exception in thread "main" Local Exception Stack: 
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: org.postgresql.util.PSQLException: ERRO: relação "biologia" não existe
  Posição: 16
Error Code: 0
Call: SELECT id FROM Biologia WHERE (id = ?)
	bind => [1 parameter bound]
Query: ReadObjectQuery(referenceClass=BancoBio )
	at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:340)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:679)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:558)
	at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:1995)
	at org.eclipse.persistence.sessions.server.ServerSession.executeCall(ServerSession.java:570)
	at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:242)
	at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:228)
	at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.selectOneRow(DatasourceCallQueryMechanism.java:714)
	at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.selectOneRowFromTable(ExpressionQueryMechanism.java:2777)
	at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.selectOneRow(ExpressionQueryMechanism.java:2730)
	at org.eclipse.persistence.queries.ReadObjectQuery.executeObjectLevelReadQuery(ReadObjectQuery.java:526)
	at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:1155)
	at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:899)
	at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:1114)
	at org.eclipse.persistence.queries.ReadObjectQuery.execute(ReadObjectQuery.java:429)
	at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeInUnitOfWork(ObjectLevelReadQuery.java:1202)
	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2894)
	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1797)
	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1779)
	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1730)
	at org.eclipse.persistence.internal.sessions.AbstractSession.readObject(AbstractSession.java:3656)
	at org.eclipse.persistence.internal.sessions.MergeManager.registerObjectForMergeCloneIntoWorkingCopy(MergeManager.java:1093)
	at org.eclipse.persistence.internal.sessions.MergeManager.mergeChangesOfCloneIntoWorkingCopy(MergeManager.java:557)
	at org.eclipse.persistence.internal.sessions.MergeManager.mergeChanges(MergeManager.java:313)
	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.mergeCloneWithReferences(UnitOfWorkImpl.java:3524)
	at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.mergeCloneWithReferences(RepeatableWriteUnitOfWork.java:384)
	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.mergeCloneWithReferences(UnitOfWorkImpl.java:3484)
	at org.eclipse.persistence.internal.jpa.EntityManagerImpl.mergeInternal(EntityManagerImpl.java:542)
	at org.eclipse.persistence.internal.jpa.EntityManagerImpl.merge(EntityManagerImpl.java:519)
	at Main.MainBD.main(MainBD.java:18)
Caused by: org.postgresql.util.PSQLException: ERRO: relação "biologia" não existe
  Posição: 16
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2103)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1836)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:512)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:273)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeSelect(DatabaseAccessor.java:1002)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:641)
	... 28 more

SOU INICIANTE. Obrigado

Olá, rafacavagnoli
Segue o código para realizar a criação de tabelas e persistir informações.

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="cnx-postgres-sistema" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <properties>
      <property name="hibernate.connection.username" value="postgres"/>
      <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
      <property name="hibernate.connection.password" value="123456"/>
      <property name="hibernate.connection.url" value="jdbc:postgresql://127.0.0.1:5432/sistema"/>
      <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
      <!-- somente cria as tabelas.-->
      <property name="hibernate.hbm2ddl.auto" value="update"/>
      
      <!-- deleta e depois recria as tabelas. -->
      <!-- <property name="hibernate.hbm2ddl.auto" value="create-drop"/> -->
     
    </properties>
  </persistence-unit>
</persistence>

1 - Não é preciso mapear a classe aqui no xml porque voçê já marcou ela com a notação @Entity.

<class>BancoDeDados.BancoBio</class>

1 - Na classe entidade é necessário apenas acrescentar o esquema.
Classe entidade.

package br.com.sistema.classes.bean;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * @author Dherkyan Ribeiro
 */
@Entity
// catalog = nome banco de dados.
// schema = esquema padrão do postgres.
@Table(catalog = "sistema", schema = "public")
public class Biologia implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "bio_id", nullable = false)
    private Integer bioId;
    @Column(name = "bio_description", length = 255)
    private String bioDescription;

    public Biologia() {
    }

    public Biologia(Integer bioId) {
        this.bioId = bioId;
    }

    public Integer getBioId() {
        return bioId;
    }

    public void setBioId(Integer bioId) {
        this.bioId = bioId;
    }

    public String getBioDescription() {
        return bioDescription;
    }

    public void setBioDescription(String bioDescription) {
        this.bioDescription = bioDescription;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (bioId != null ? bioId.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
       
        if (!(object instanceof Biologia)) {
            return false;
        }
        Biologia other = (Biologia) object;
        if ((this.bioId == null && other.bioId != null) || (this.bioId != null && !this.bioId.equals(other.bioId))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return bioId + " " +bioDescription;
    }
    
}

1 - A classe de execução permanece como a sua.

Componente Main para executar o programa.

package br.com.sistema.classes.exe;

import br.com.sistema.classes.bean.Biologia;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
 * @author Dherkyan Ribeiro
 */
public class Exe {

    public static void main(String[] args) {

        // Obj p/ gravar no bd.
        Biologia biologia = new Biologia();
        biologia.setBioId(1);
        biologia.setBioDescription("bio 01");

        // Gerenciador de persistência.
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("cnx-postgres-sistema");
        EntityManager em = emf.createEntityManager();

        try {
            // abrindo transação.
            em.getTransaction().begin();
            // salvando no bd.
            em.persist(biologia);
            // confima e encerra a transação.
            em.getTransaction().commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (em != null) {
                // encerra a conexão.
                em.close();
            }
        }
    }
}

1 - Após executar o programa e criar as tabelas, comente as configurações do xml para não ficar recriando
as tabelas a cada execução.

Recomendo uma pesquisa sobre regras de nomenclatura java,
para evitar confusão e tornar seu código mais profissional.
Parabéns pela iniciativa em aprender java.
até mais.

– Dherkyan Ribeiro - Java Architect.

[quote=dherkyan@gmail.com]Olá, rafacavagnoli
Segue o código para realizar a criação de tabelas e persistir informações.

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="cnx-postgres-sistema" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <properties>
      <property name="hibernate.connection.username" value="postgres"/>
      <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
      <property name="hibernate.connection.password" value="123456"/>
      <property name="hibernate.connection.url" value="jdbc:postgresql://127.0.0.1:5432/sistema"/>
      <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
      <!-- somente cria as tabelas.-->
      <property name="hibernate.hbm2ddl.auto" value="update"/>
      
      <!-- deleta e depois recria as tabelas. -->
      <!-- <property name="hibernate.hbm2ddl.auto" value="create-drop"/> -->
     
    </properties>
  </persistence-unit>
</persistence>

1 - Não é preciso mapear a classe aqui no xml porque voçê já marcou ela com a notação @Entity.

<class>BancoDeDados.BancoBio</class>

1 - Na classe entidade é necessário apenas acrescentar o esquema.
Classe entidade.

package br.com.sistema.classes.bean;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * @author Dherkyan Ribeiro
 */
@Entity
// catalog = nome banco de dados.
// schema = esquema padrão do postgres.
@Table(catalog = "sistema", schema = "public")
public class Biologia implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "bio_id", nullable = false)
    private Integer bioId;
    @Column(name = "bio_description", length = 255)
    private String bioDescription;

    public Biologia() {
    }

    public Biologia(Integer bioId) {
        this.bioId = bioId;
    }

    public Integer getBioId() {
        return bioId;
    }

    public void setBioId(Integer bioId) {
        this.bioId = bioId;
    }

    public String getBioDescription() {
        return bioDescription;
    }

    public void setBioDescription(String bioDescription) {
        this.bioDescription = bioDescription;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (bioId != null ? bioId.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
       
        if (!(object instanceof Biologia)) {
            return false;
        }
        Biologia other = (Biologia) object;
        if ((this.bioId == null && other.bioId != null) || (this.bioId != null && !this.bioId.equals(other.bioId))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return bioId + " " +bioDescription;
    }
    
}

1 - A classe de execução permanece como a sua.

Componente Main para executar o programa.

package br.com.sistema.classes.exe;

import br.com.sistema.classes.bean.Biologia;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
 * @author Dherkyan Ribeiro
 */
public class Exe {

    public static void main(String[] args) {

        // Obj p/ gravar no bd.
        Biologia biologia = new Biologia();
        biologia.setBioId(1);
        biologia.setBioDescription("bio 01");

        // Gerenciador de persistência.
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("cnx-postgres-sistema");
        EntityManager em = emf.createEntityManager();

        try {
            // abrindo transação.
            em.getTransaction().begin();
            // salvando no bd.
            em.persist(biologia);
            // confima e encerra a transação.
            em.getTransaction().commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (em != null) {
                // encerra a conexão.
                em.close();
            }
        }
    }
}

1 - Após executar o programa e criar as tabelas, comente as configurações do xml para não ficar recriando
as tabelas a cada execução.

Recomendo uma pesquisa sobre regras de nomenclatura java,
para evitar confusão e tornar seu código mais profissional.
Parabéns pela iniciativa em aprender java.
até mais.

– Dherkyan Ribeiro - Java Architect.[/quote]
-Continuou dando errado, se eu criar as tabelas pelo BD ele fica excelente. Sé tem esse problema de não conseguir criar a tabela.
Obrigado

E ai blz,

Bom é o seguinte, em seu log de erro veja que seu select está com o nome da tabela que será criada no banco
de dados quando deveria ser o nome da sua entidade.

o correto seria assim.

abaixo vai um link de um exemplo que postei sobre o assunto.
http://www.guj.com.br/java/284441-solucao--erro-no-persistence-provider-for-entitymanager-named