JPA 休眠表不存在



我有一个我一直在努力解决的问题,但我一无所获。

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

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

这是我的坚持.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>

这是阿卢诺类:

@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;
// ....
}

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

只是为了记录,我第一次开始这个项目时,它工作得很好,但由于我犯了一个错误,我不得不放弃表格,之后休眠停止创建表格,现在我什么也做不了

修改

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

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

value="update" 修改现有表,而 value="create" 创建一个表,但如果该表已存在,它将删除包含数据的表并再次创建一个表。

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

有关 hbm2ddl.auto 的所有可能值,请参阅此处

Hibernate hbm2ddl.auto 可能的值以及它们的作用?

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

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

提供模式以及表名,例如

@Table(name=“TAB_ALUNOS”, schema = "dbo")

我尝试将其更改为:

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

我也尝试更改为:

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

这两个人都没有工作。

最新更新