我有一个问题,我一直在努力解决,但我没有到达任何地方。
我正在使用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;
// ....
}
关于如何解决这个问题的任何想法?
仅仅为了记录,我第一次开始这个项目,它工作得很好,但由于我犯了一个错误,我不得不放弃桌子,之后休眠停止创建桌子,现在我可以'做任何事情
答案 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
的所有可能值答案 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" />
这两个人中没有一个有效。