关于spring整合hibernate的时候自动创建表的问题

<propertyname="hibernateProperties">    <props> ... <property name="hibernateProperties">     <props >      <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>       <prop key="hibernate.show_sql">true</prop>       <prop key="hibernate.format_sql">true</prop>       <prop key="current_session_context_class">thread</prop>       <prop key="hbm2ddl.auto">update</prop>     </props>    </property> 我明明设置了自动生成表,可是为什么没生成呢, 展开
 我来答
longturong
推荐于2016-06-29 · TA获得超过2083个赞
知道小有建树答主
回答量:153
采纳率:0%
帮助的人:165万
展开全部
<prop key="hibernate.hbm2ddl.auto">update</prop>
漏了"hibernate",若没写全会被框架认为没配置,所以不会导出schema;

关于update和create:
(1)update 但schema发生改变时进行更新,比如添加字段,保留原有数据;
(2)create 每次运行重新创建schema,如果表存在,先删除再创建,原有数据丢失;
update也会创建表,以下是配置>update<执行的代码(hibernate的源码):
if ( table.isPhysicalTable() ) {

TableMetadata tableInfo = databaseMetadata.getTableMetadata(
table.getName(),
( table.getSchema() == null ) ? defaultSchema : table.getSchema(),
( table.getCatalog() == null ) ? defaultCatalog : table.getCatalog(), table.isQuoted()
);
if ( tableInfo == null ) {
script.add(
table.sqlCreateString(
dialect,
mapping,
defaultCatalog, defaultSchema
)
);
}
else {
Iterator<String> subiter = table.sqlAlterStrings(
dialect,
mapping,
tableInfo,
defaultCatalog,
defaultSchema
);
while ( subiter.hasNext() ) {
script.add( subiter.next() );
}
}

Iterator<String> comments = table.sqlCommentStrings( dialect, defaultCatalog, defaultSchema );
while ( comments.hasNext() ) {
script.add( comments.next() );
}

}
}

表若不存在,也会被创建.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
马书强10
2012-02-28 · TA获得超过375个赞
知道小有建树答主
回答量:360
采纳率:0%
帮助的人:336万
展开全部
没问题,应该行,要是实在不行你换成update变成create
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式