JPA Hibernate表不存在

时间:2018-05-25 11:55:25

标签: java hibernate jpa

我有一个问题,我一直在努力解决,但我没有到达任何地方。

我正在使用JPA Hibernate创建表,但他没有创建表,而是向我显示错误:

  

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表'escola.tab_alunos'不存在

这是我的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="0000" />

        <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>

这是Aluno班:

@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;

    // ....
 }

关于如何解决这个问题的任何想法?

仅仅为了记录,我第一次开始这个项目,它工作得很好,但由于我犯了一个错误,我不得不放弃桌子,之后休眠停止创建桌子,现在我可以'做任何事情

4 个答案:

答案 0 :(得分:0)

修改

<property name="hibernate.hbm2ddl.auto" value="update" />

<property name="hibernate.hbm2ddl.auto" value="create" />

值=&#34;更新&#34;修改现有表格,而值=&#34;创建&#34;创建一个表,但是如果该表已经存在,它会删除包含数据的表并再次创建一个表。

答案 1 :(得分:0)

更改<property name="hibernate.hbm2ddl.auto" value="create" />

请参阅此处了解hbm2ddl.auto

的所有可能值

Apple documentation

答案 2 :(得分:0)

错误显示是因为您的persistance.xml已配置为更新表。在第一次运行期间,没有已创建的表,因此无需更新。

在第一次运行时,设置<property name="hibernate.hbm2ddl.auto" value="create" />以便可以从pojo创建表。然后,将其重新设置为<property name="hibernate.hbm2ddl.auto" value="update" />,以便您的表格可以更新,而不是在每次运行时创建

答案 3 :(得分:-1)

我尝试将其更改为:

<property name="hibernate.hbm2ddl.auto" value="create" />

我也尝试过改为:

<property name="hibernate.hbm2ddl.auto" value="create-drop" />

这两个人中没有一个有效。