Erro ao Persistir Dados JPA

Boa tarde galera,
Estou tentando fazer um merge com JPA e estou levando os seguintes erros:

javax.persistence.RollbackException: Error while committing the transaction

org.hibernate.exception.SQLGrammarException: could not execute statement
org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:63)

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table ‘escola.tab_alunos’ doesn’t exist

Seguem as anotações da classe:

@Entity
@Table(name=“TAB_ALUNOS”)
@SequenceGenerator(name=“TAB_ALUNOS_PK”, sequenceName=“SEQ_ALUNOS_PK”, allocationSize=1)
public class Aluno {

@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="TAB_ALUNOS_PK")
private Long id;

@Column(length=10, nullable=false)
private String matricula;

@Column(length=100, nullable=false)
private String nome;

@Column(length=9 ,nullable=false)
private String sexo;

@Column(name="DATA_NASCIMENTO", length=10, nullable=false)
private String dataNascimento;

@Column(length=30, columnDefinition="DEFAULT 'Ativo'")
private String situacao;

Alguma sugestão do que poderia ser?

Esse nome de tabela existe? Rodou o select gerado pelo jpa direto na ferramenta do mysql?

Então, a tabela não existe, mas eu esperava que o JPA criasse ela pra mim.
Aqui o persistence.xml:

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_2_0.xsd"
version=“2.0”>

<persistence-unit name="banco" transaction-type="RESOURCE_LOCAL">
    <description>
        Persistence unit for the JPA tutorial of the Hibernate Getting Started Guide
    </description>
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>org.halyph.sessiondemo.Event</class>

    <properties>
        <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
        <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/escola" />
        <property name="javax.persistence.jdbc.user" value="root" />
        <property name="javax.persistence.jdbc.password" value="fatima" />

        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.hbm2ddl.auto" value="update" />
    </properties>

</persistence-unit>

Em relação a criar tabela pelo hibernate não posso te ajudar, nunca vi empresas sérias fazerem dessa forma.

O sistema está sendo desenvolvido pra um trabalho de faculdade

Entendo, normal faculdade pedir pra praticar o que não é usado nas grandes empresas. Aparentemente pela documentação, hibernate.hbm2ddl.auto está correto como update, o resto não sei, você pode esperar alguém que trabalhe dessa forma te responder ou criar um tópico específico sobre criação de tabela a partir do hibernate.

@MGenteluci Seu arquivo de persistencia está errado. Pessoalmente eu prefiro utilizar JPA com EclipseLink, Hibernate é muito lento e não funciona muito bem com EJB.

{

  <persistence-unit name="banco" transaction-type="RESOURCE_LOCAL">
  <description>
         Persistence unit for the JPA tutorial of the Hibernate Getting Started Guide
  </description>
   <provider>org.hibernate.ejb.HibernatePersistence</provider>
   <class>org.halyph.sessiondemo.Event</class>
    <!-- todas as classes que serão utilizadas pelo módulo de persistencia devem ser  declaradas-->
    <class>pacote.onde.fica.classe.Aluno</class>

 <properties>
    <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
    <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/escola" />
    <property name="javax.persistence.jdbc.user" value="root" />
    <property name="javax.persistence.jdbc.password" value="fatima" />

    <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
    <property name="hibernate.show_sql" value="true" />
    <!-- para criar as tabelas automaticamente use create durante o desenvolvimento é melhor usar create-drop -->
    <property name="hibernate.hbm2ddl.auto" value="create" />
</properties>
}

Boa noite Villagram,
adicionei lá o

<class>model.Aluno</class>

e também tentei com o create e também o create-drop. Nada funcionou!!

Alguma outra idéia?

Posta o erro…você usa algum container para gerenciar seus beans?

O erro se manteve o mesmo, aquele que postei lá em cima.

Pra ser honesto eu não sei exatamente o que você quis dizer com gerenciador de beans, então provavelmente eu não uso.

Se você não sabe isso então quer dizer que você também não sabe o que é um EJB?

Não sei amigo

então troca o provider da sua aplicação para o eclipselink…pq o erro que está acontecendo é de que a tabela não existe no banco…ou você cria ela manualmente ou troca esse provider.

Infelizmente isso não resolveria meu problema, o trabalho da faculdade precisa ser feito com Hibernate JPA

Se eu criar as tabelas manualmente ele funciona, o que ele não consegue fazer é criar a tabela.

Esta com as permissões OK do user com o db?

Você precisa utilizar um arquivo de persistencia exato ou pode utilizar outro meio de configuração? O arquivo persistence.xml com este provider de hibernate não funciona muito bem com MySql…caso você puder é melhor utilizar o arquivo de configuração do próprio hibernate (hibernate.cfg.xml).

As permissões definidas no persistence.xml estão como de usuário root.

Atualizando o tópico, como vocês puderam ver lá em cima, ao mesmo que o hibernate deveria criar a tabela tab_alunos, ele também deve criar a seq_alunos_pk, e a sequência ele está criando, só o que não cria mesmo é a tabela.

Não sei se isso pode esclarecer algo pra vocês.

At.,

Ainda continuo com o problema, mas vim atualizar o tópico.

Criei um projeto diferente, em um banco diferente e de começo funcionou tudo ok, o hibernate criou as tabelas de boa então fui e deletei as tabelas direto no banco de dados. Depois disso o hibernate foi incapaz de criar as tabelas novamente.