hibernate.hbm2ddl.auto =创建不清除现有数据

时间:2012-03-19 13:47:09

标签: hibernate integration-testing

我正在使用

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

在我的 persistence.xml 中进行集成测试,当我运行集成测试时,我得到了

ERROR SchemaExport:386 - Unsuccessful: create table tableName ...
ERROR SchemaExport:387 - Table 'tableName' already exists

hbm2ddl.auto = create 是否应该替换该表(如果已存在)?为什么我会收到此错误?

顺便说一下,这个上周正如预期的那样工作,所以我真的很困惑为什么我会突然得到这个错误。

3 个答案:

答案 0 :(得分:0)

我最终手动编写并执行SQL语句以删除并重新创建模式,然后按预期再次工作。我从来没有弄清楚为什么Hibernate不会丢弃并重新创建现有的表,而且从那以后它就再也没有发生过了。

答案 1 :(得分:0)

这个错误让我第一次感到困惑。但解决方案很简单。只需在hibernate.cfg.xml中更改此选项:

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

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

答案 2 :(得分:0)

Hibernate 3.7中的行为更改已在4.x中恢复,我假设,请参阅https://hibernate.atlassian.net/browse/HHH-6384