JPA - 添加新实体或属性而不删除和创建时出错

时间:2012-05-29 05:11:53

标签: java-ee jpa netbeans eclipselink

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

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

当我开始制作时,在添加新实体时,我不能丢失数据库的数据。有没有办法克服这个问题。我试图使用数据库模式,但无法知道如何操作。

1 个答案:

答案 0 :(得分:2)

您只有三个架构生成选项(source with more details):

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

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

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