hibernate.hbm2ddl.auto hibernate如何决定何时创建或更新ddl?

hibernate.hbm2ddl.auto hibernate如何决定何时创建或更新ddl?,hibernate,hsqldb,Hibernate,Hsqldb,我们在hibernate和hsqldb中自动创建ddl方面遇到了一些问题 我们使用 <property name="hibernate.hbm2ddl.auto" value="create-drop"/> 通常,当我们更改映射对象时,hibernate会自动在数据库的模式中创建表,但有时它拒绝这样做。在这种情况下,我们必须手动从文件系统中删除数据库,以说服hibernate重新创建所有表 有人知道hibernate如何决定何时在db上重新创建数据模型吗?我已经读到,它决定在创

我们在hibernate和hsqldb中自动创建ddl方面遇到了一些问题

我们使用

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

通常,当我们更改映射对象时,hibernate会自动在数据库的模式中创建表,但有时它拒绝这样做。在这种情况下,我们必须手动从文件系统中删除数据库,以说服hibernate重新创建所有表


有人知道hibernate如何决定何时在db上重新创建数据模型吗?我已经读到,它决定在创建SessionFactory时,但说服hiberbate更新或创建表的确切条件是什么?

在hibernate配置文件中,您可以选择以下选项:

<property name="hbm2ddl.auto">update</property>
更新
update
更改为
create
,或
create drop
validate


或者,如果设置正确,但它没有达到预期效果,请检查日志消息,并在需要时提高日志级别。

如果它没有删除,可能是因为当时表上有锁或其他东西阻止Hibernate删除它。是的,这是我能理解的,但是,当我们删除模式并手动重新创建它时,我们也会遇到问题。所以模式完全是空的,所以我认为不能有任何锁了。我还将应用程序使用的模式更改为新模式,hibernate再次拒绝创建表。在应用程序没有任何进一步更改的情况下,它在从文件系统中删除数据库后工作。Hibernate调试日志中是否有任何东西表明它为什么会这样做?