1

我刚刚将我的 persistence.xml 从

<property name="toplink.ddl-generation" value="drop-and-create-tables"/>

<property name="toplink.ddl-generation" value="create-tables"/>

正如我所料,现在数据在应用程序运行之间仍然存在。但是,这并不是我期望此设置起作用的方式。不应该只在表丢失或不匹配时创建删除和创建?

我只是想知道这是否是标准的,或者可能表明我没有正确使用 JPA,当设置了 drop-and-create 时,表太容易被核弹了。

4

2 回答 2

1

是的,我认为你的观察是正确的。至少我有同样的问题。如果您描述的行为有另一种选择,那就太好了。

于 2012-05-04T10:49:34.527 回答
1

这是预期的行为。

create-tables只会尝试创建表,如果表已经存在,则不会删除或替换它,将使用现有表。这不会检查表是否与您尝试创建的表匹配 - 仅检查具有给定名称的表是否存在。如果您的方案发生变化,您必须手动(或通过其他机制)删除表,以便下次重新创建它。

drop-and-create-tables将首先删除现有表,然后创建新表。请注意,当它们被删除时,这将丢失表中的所有数据。

于 2012-05-04T10:51:31.513 回答