您的位置:首页 > 其它

hibernate不能自动建表

2015-11-03 22:12 260 查看
开发过程中,遇到了hibernate不能自动建表,但是自己创建表以后,可以正常运行,这种情况,通常是由于方言(dialect)的设置不正确引起的。代码如下:

<hibernate-configuration>

<!--

sessionFactory代表一个数据库的描述

-->

<session-factory>

<property name="connection.password">root</property>

<property name="connection.username">root</property>

<property name="hibernate.connection.driver_class">

com.mysql.jdbc.Driver

</property>

<property name="hibernate.connection.url">

jdbc:mysql://localhost:3306/oa

</property>

<!--

告诉hibernate链接的是什么数据库

使用第一种方言,不能自动建表,使用第二种可以。

原因是:hibernate针对MySQL 和 MySQL with innodb 有两种不同方言,我装的是mysql。

-->

<!-- <property name="dialect">

org.hibernate.dialect.MySQLInnoDBDialect

</property> -->

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

<!--

validate 默认值

根据持久化类和映射文件检查表的结构

update

hibernate容器在启动的时候,会根据持久化类和映射文件检查表的结构

如果不存在,则创建,如果存在,则更新

create

每次启动hibernate容器,不管表是否存在,都会创建

create-drop

当启动hibernate容器时创建表,当hibernate容器销毁时,删除表

-->

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

<!--

引入映射文件

-->

<property name="show_sql">true</property>

<mapping resource="com/realfond/domain/Person.hbm.xml" />

<mapping resource="com/realfond/domain/system/Department.hbm.xml" />

<mapping resource="com/realfond/domain/system/Role.hbm.xml" />

<mapping resource="com/realfond/domain/system/User.hbm.xml" />

</session-factory>

</hibernate-configuration>

如上,如果开发中出现这种问题,可以将方言设置为hibernate对应的自己所装数据库的方言,网上可以查到hibernate对应的各个数据库的方言,希望能够帮到大家。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: