0

我正在使用 JSF 开发一个 Java EE 应用程序,EclipseLink2 作为 JPA 安装,mySQL 作为 Netbeans 的后端数据库。

该应用程序工作正常,除非我向现有实体添加新属性或创建新实体。如果我在 Persistance.xml 文件中选择 dropandcreate 选项,应用程序将再次运行而不会出现错误,但它会删除包含先前条目的整个数据库。

当我投入生产时,我不能在添加新实体时丢失数据库的数据。有什么办法可以克服这个。我尝试使用数据库模式,但不知道该怎么做。

4

1 回答 1

2

您只有三个模式生成选项(包含更多详细信息的源):

  • none:不生成任何内容
  • create-tables:通常创建新表并将数据保存在旧表中
  • drop-and-create-tables:删除旧表并创建新表,因此所有数据都将丢失。

如您所见,其中任何一个都不支持您必须保留数据和添加列的方案。您可能会发现自动模式生成不支持许多其他场景,例如更改列类型和转换数据。

因为生成模式不适用于您的情况,所以最好将其保留为开发时间工具,并学习自己编写用于生产的模式。关于这个问题的更多意见可以从这个讨论中找到。它是关于 Hibernate,所以属性名称不同,但问题与 EclipseLink 相同。

于 2012-05-29T05:44:14.790 回答