我正在使用 JSF 开发一个 Java EE 应用程序,EclipseLink2 作为 JPA 安装,mySQL 作为 Netbeans 的后端数据库。
该应用程序工作正常,除非我向现有实体添加新属性或创建新实体。如果我在 Persistance.xml 文件中选择 dropandcreate 选项,应用程序将再次运行而不会出现错误,但它会删除包含先前条目的整个数据库。
当我投入生产时,我不能在添加新实体时丢失数据库的数据。有什么办法可以克服这个。我尝试使用数据库模式,但不知道该怎么做。
我正在使用 JSF 开发一个 Java EE 应用程序,EclipseLink2 作为 JPA 安装,mySQL 作为 Netbeans 的后端数据库。
该应用程序工作正常,除非我向现有实体添加新属性或创建新实体。如果我在 Persistance.xml 文件中选择 dropandcreate 选项,应用程序将再次运行而不会出现错误,但它会删除包含先前条目的整个数据库。
当我投入生产时,我不能在添加新实体时丢失数据库的数据。有什么办法可以克服这个。我尝试使用数据库模式,但不知道该怎么做。
您只有三个模式生成选项(包含更多详细信息的源):
如您所见,其中任何一个都不支持您必须保留数据和添加列的方案。您可能会发现自动模式生成不支持许多其他场景,例如更改列类型和转换数据。
因为生成模式不适用于您的情况,所以最好将其保留为开发时间工具,并学习自己编写用于生产的模式。关于这个问题的更多意见可以从这个讨论中找到。它是关于 Hibernate,所以属性名称不同,但问题与 EclipseLink 相同。