我刚刚从
切换了我的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时,表格很容易被破解。
答案 0 :(得分:1)
是的,我认为您的观察是正确的。至少我有同样的问题。如果您描述的行为有其他选择,那就太好了。
答案 1 :(得分:1)
这是预期的行为。
create-tables
将仅尝试创建表,如果表已存在,则不会删除或替换表,将使用现有表。这样做不检查表是否与您尝试创建的表匹配 - 就像存在具有给定名称的表一样。如果您的方案发生变化,您将不得不手动(或通过其他机制)删除该表,以便下次新创建它。
drop-and-create-tables
将首先删除现有表,然后创建新表。请注意,这将丢弃表中的所有数据。