【问题标题】:drop-and-create-tables drops too easilydrop-and-create-tables 太容易掉线了
【发布时间】:2012-05-13 21:45:10
【问题描述】:

我刚刚从

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

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

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

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

【问题讨论】:

  • Drop-create 非常适合集成测试,这基本上就是它的目的。
  • 啊,这说明了目的!现在更有意义了。

标签: java mysql database-design jpql toplink


【解决方案1】:

这是预期的行为。

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

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

【讨论】:

  • 好的,感谢您的快速回复并确认这是预期的行为。我不认为这是 正确 的行为,但这只是我的看法。无论如何,很高兴知道,再次感谢。
【解决方案2】:

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

【讨论】:

  • Marko Topolnik 在对问题的评论中解释说,目的是进行集成测试。
猜你喜欢
  • 2022-12-02
  • 1970-01-01
  • 1970-01-01
  • 2021-05-15
  • 2010-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多