drop-and-create-tables太容易掉线了

时间:2012-05-04 10:41:54

标签: java mysql database-design jpql toplink

我刚刚从

切换了我的persistence.xml
<property name="toplink.ddl-generation" value="drop-and-create-tables"/>

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

现在数据在应用程序运行之间仍然存在,正如我所料。但是,这并不是我期望这种设置工作的方式。不应该只在表缺失或不匹配时才创建drop-and-create吗?

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

这是预期的行为。

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

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